码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 10954 (Huffman 优先队列) Add All

时间:2015-04-13 20:22:15      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

直接用一个优先队列去模拟Huffman树的建立过程。

每次取优先队列前两个数,然后累加其和,把这个和在放入到优先队列中去。

技术分享
 1 #include <cstdio>
 2 #include <queue>
 3 using namespace std;
 4 
 5 int main()
 6 {
 7     int n;
 8     while(scanf("%d", &n) == 1 && n)
 9     {
10         priority_queue<int, vector<int>, greater<int> > q;
11         int x, ans = 0;
12         for(int i = 0; i < n; i++) { scanf("%d", &x); q.push(x); }
13         for(int i = 0; i < n-1; i++)
14         {
15             int a = q.top(); q.pop();
16             int b = q.top(); q.pop();
17             ans += a + b;
18             q.push(a + b);
19         }
20         printf("%d\n", ans);
21     }
22 
23     return 0;
24 }
代码君

 

UVa 10954 (Huffman 优先队列) Add All

标签:

原文地址:http://www.cnblogs.com/AOQNRMGYXLMV/p/4422938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!