#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
const int MAX_N = 50010;
typedef long long ll;
int N, L[MAX_N];
void solve() {
ll ans = 0;
priority_queue<int, vector<int>, greater<int> > que;
for (int i = 0; i < N; i++) {
que.push(L[i]);
}
while (que.size() > 1) {
int l1, l2;
l1 = que.top();
que.pop();
l2 = que.top();
que.pop();
ans += l1 + l2;
que.push(l1 + l2);
}
printf("%lld\n", ans);
}
int main() {
scanf("%d", &N);
for (int i = 0; i < N; i++) {
scanf("%d", &L[i]);
}
solve();
return 0;
}
poj 3253 优先级队列 哈夫曼编码
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 原文链接:http://blog.csdn.net/itplus/article/details/37969817...
- 什么是哈夫曼树(Huffman Tree)eg:将百分制的考试成绩转换为五分制的成绩if ( score < 60...
- 最近在做智能穿戴设备的项目,需要将一些状态数据集合传输回APP端,由于数据集合稍大,如果原封不动地将集合传输过去,...
- 1.原创:http://blog.csdn.net/tengweitw/article/details/45478...