ZOJ 1543 Stripies(哈夫曼贪心)

来源:互联网 发布:答题软件游戏 编辑:程序博客网 时间:2024/05/22 07:05

我用的是优先队列,每次选择最大的两个进行2*sqrt()操作,再压入队列.

#include <iostream>#include <memory.h>#include <queue>#include <vector>#include <cmath>#include <cstdio>#include <functional>using namespace std;priority_queue<double>q;int n;int main(){while (scanf("%d",&n)==1){while(q.size())q.pop();while (n--){int t;scanf("%d",&t);q.push(t);}while (q.size()>=2){double t1=q.top();q.pop();double t2=q.top();q.pop();q.push(2*sqrt(t1*t2));}printf("%.3lf\n",q.top());q.pop();}return 0;}


原创粉丝点击