POJ 3253 Fence Repair
2010-10-27 16:59
204 查看
本题是简单的赫夫曼,因为每次将他们分开两半的时候都要按照长度收费,也就是说第一次被分开的只收费了一次,第二次被分开的收费了二次(因为前面已经收费了一次)......第n次分开的要收费n次。就是求如何合理的安排是的总费用最小,这是典型的最优生成树的问题,本题可以不用建树,根据所给的数据计算一下总的权值即可。
本题虽简单,但还是水了一把,主要是对总权值的计算理解错了,每次从优先队列中拿出两个最小的算出和,总全职加上这个和,然后把这个和插入到优先队列里。还有,数据量比较大,总权值用long long。
本题虽简单,但还是水了一把,主要是对总权值的计算理解错了,每次从优先队列中拿出两个最小的算出和,总全职加上这个和,然后把这个和插入到优先队列里。还有,数据量比较大,总权值用long long。
#include <algorithm> #include <queue> #include <functional> #include <cstdio> using namespace std; int num[20001],tol,sum; long long res; int main(void) { while(scanf("%d",&tol)!=EOF) { int i; for(i=0; i<tol; ++i) scanf("%d",&num[i]); priority_queue<int,vector<int>,greater<int> > que (num,num+tol); res=0; while(true) { sum=0; sum+=que.top(); que.pop(); if(que.empty()) break; sum+=que.top(); que.pop(); res+=sum; que.push(sum); } printf("%lld/n",res); } return 0; }
相关文章推荐
- POJ - 3253 Fence Repair
- POJ 3253 Fence Repair
- POJ 3253 Fence Repair 优先队列
- poj 3253 Fence Repair
- POJ - 3253 Fence Repair 最优二叉树
- POJ 3253 Fence Repair(贪心+优先队列)
- POJ 3253 Fence Repair
- poj 3253 Fence Repair (优先队列)
- POJ 3253 fence repair [STL][priority_queue]
- POJ 3253 Fence Repair
- POJ 3253 Fence Repair
- poj 3253 Fence Repair 哈夫曼最优解STL解法
- POJ -3253 Fence Repair
- [ACM] POJ 3253 Fence Repair (Huffman树思想,优先队列)
- POJ 3253:Fence Repair
- POJ——3253 Fence Repair
- POJ 3253 Fence Repair
- POJ 3253 优先队列 Fence Repair
- 文章标题 POJ 3253 : Fence Repair(哈夫曼)
- POJ-3253 Fence Repair