UVA10954 哈夫曼编码
来源:互联网 发布:米内数据库 编辑:程序博客网 时间:2024/05/22 02:47
【分析】 这题没难度,就是哈夫曼编码的题。思想是贪心,用小根堆维护。不过我学习的重点是使用c++ STL的优先队列,以及如何自定义重载运算符。感觉STL真心实用且方便。
#include <cstdio>#include <queue>#include <cmath>using namespace std;typedef long long ll;int n;ll ans;struct cmp{ bool operator () (ll &a, ll &b){ return a>b; }};priority_queue<ll,vector<ll>,cmp>que;void init(){ ll x; while (!que.empty()) que.pop(); for (int i=0; i<n; i++) { scanf("%lld",&x); que.push(x); }}void cnt(){ ans = 0; ll tmp; while (que.size()>1){ tmp = que.top(); que.pop(); tmp += que.top(); que.pop(); que.push(tmp); ans += tmp; }}int main(){ while (scanf("%d",&n) && n){ init(); cnt(); printf("%lld\n",ans); } return 0;}
阅读全文
0 0
- UVA10954 哈夫曼编码
- uva10954
- UVa10954
- UVA10954
- UVA10954
- uva10954
- uva10954
- uva10954
- UVA10954
- uva10954 - Add All
- uva10954 Add All
- uva10954 - Add All
- uva10954 - Add All(multiset函数)
- UVA10954 Add All (优先队列)
- UVA10954哈夫曼树与优先队列
- Uva10954——Add All
- UVA10954 :Add All(全部相加)
- [贪心&&优先队列]uva10954 Add All
- 洛谷P2016 战略游戏
- Javascript 异步加载详解
- 集合知识
- c++属于一组数据求和
- 67.Scala并发编程匿名Actor、消息传递、偏函数实战解析及其在Spark源码中的应用解析
- UVA10954 哈夫曼编码
- stm32-串口接受不定长数据方法(3种)
- 剑指offer之旋转数组的最小数字
- 一次奇葩的面试
- windows补丁卸载失败的处理
- 分布式服务框架---读后总结
- MySQL学习笔记(2)--基本的SQL语句
- HDU 5212 Code GCD容斥(套路).
- Count the string next数组+DP