九度:1172<哈夫曼树WPL>
2014-03-10 14:20
423 查看
http://ac.jobdu.com/problem.php?pid=1172
// 九度:1172 // 求哈夫曼树的wpl // 没有构建哈夫曼树 #include <stdio.h> #include <queue> using namespace std; priority_queue<int, vector<int>, greater<int> > Q;//小顶堆 int main() { #ifdef ONLINE_JUDGE #else freopen("E:\\in.txt", "r", stdin); // freopen("E:\\out.txt", "w", stdout); #endif int n; while(scanf("%d", &n) != EOF) { while(Q.empty() == false) { Q.pop(); } while(n-->0) { int t; scanf("%d", &t); Q.push(t); } int WPL=0; while(Q.size() > 1) { int a=Q.top(); Q.pop(); int b=Q.top(); Q.pop(); WPL = WPL + a + b; Q.push(a+b); } printf("%d\n", WPL); }//while return 0; } // ---- 不用小顶堆,每次自己排序,效率差了不少 #include <stdio.h> #include <algorithm> using namespace std; int a[1000]; int main() { int n; while(scanf("%d", &n) != EOF) { int i; for(i=0; i<n;i ++) { scanf("%d", &a[i]); } int WPL=0; for(i=1; i<n; i++) { sort(a+i-1, a+n); WPL = WPL + a[i] + a[i-1]; a[i] += a[i-1]; } printf("%d\n", WPL); } return 0; }
相关文章推荐
- 九度:1006<ZOJ问题><规则,规律>
- 九度:1019<图的连通性>
- 九度:1034<部分排序><乌镇大富翁>
- 九度:1011<A+B for Metrics>
- 九度:1445<并查集>
- 哈夫曼树详解<续>
- <九度 OJ>题目1028:继续畅通工程
- 九度:1012<并查集>
- 九度:<1002><规则,判断>
- 九度:1154<最小生成树>
- 九度:1033<继续3n+1>
- 九度:1004<Median><中位数>
- 九度:1007<排序><奥运排序>
- <九度 OJ>题目1012:畅通工程
- 九度:1464<Hello World For U><排版>
- <九度 OJ>题目1012:畅通project
- 九度:1013<开门人>
- 哈夫曼树--九度 1172 & 1107 [优先队列实现小顶堆]
- 九度:1468<Sharing><链表>
- 九度:1447<最短路径><Floyd><Dijstra>