BaiLian4080 Huffman编码树

解题思路

所求即为最短路径之和, 也等于新生成节点频率之和.所以可以使用优先队列每次获取一个最小值和次小值, 所求之和即为新生成节点的频率…再依次获取即可.
这个题还用到了priority_queue.使用如下:
Priority_queue:优先队列, 不仅可以存储数据还可以按照某种规则进行排序.每次的push, 和pop操作, 里面数据都会进行动态调整, 把优先级高的放在前面.
使用 :
template <class T, class Container = vector,
class Compare = less > class priority_queue;

T:数据类型, 第三个参数默认不写是从大到小, 如果从小到大可以使用greater.

代码

#include<iostream>
#include<queue>
using namespace std;
priority_queue<int, vector<int>, greater<int> >Q;
int total = 0;
int main()
{int n,w;cin >> n;while (n--){cin >> w;Q.push(w);}while (Q.size() != 1){int sum = 0;sum += Q.top();Q.pop();sum += Q.top();Q.pop();Q.push(sum);total += sum;}cout << total << endl;return 0;
}

百练4080:Huffman编码树相关推荐

  1. Huffman编码树

    全部数据结构.算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360 Huffman树的要求是n个外部 ...

  2. 数据压缩 实验三 Huffman编解码算法实现与压缩效率分析

    实验目的 掌握Huffman编解码实现的数据结构和实现框架, 进一步熟练使用C编程语言, 并完成压缩效率的分析. 实验原理 1.本实验中Huffman编码算法 (1)将文件以ASCII字符流的形式读入 ...

  3. 百练,4103,踩方格

    百练,4103,踩方格 普通做法:(也可以找规律) #include #include//要调用memset函数,头文件 using namespace std; int visited[50][50 ...

  4. 北大OJ百练——4075:矩阵旋转(C语言)

    百练的这道题很简单,通过率也达到了86%,所以我也就来贴个代码了...下面是题目: 不过还是说一下我的思路: 这道题对一个新来说,可能是会和矩阵的转置相混淆,这题并不是要我们去求矩阵的转置. 这题,我 ...

  5. 威佐夫博弈:百练OJ:1067:取石子游戏

    威佐夫博弈(Wythoff's game):有两堆各若干个物品,两个人轮流从任一堆取至少一个或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜. 百练OJ:1067:取石子游戏 ...

  6. 百练OJ:4003:十六进制转十进制(python三行代码实现)

    题目链接:百练OJ:4003 描述 将十六进制数转换成十进制数 输入 第一行有一个整数T,表示共有T组数据 接下来T行,每一行为一个16进制无符号正整数,位数不超过8位,数中的a-f均为大写字母,数前 ...

  7. 百练OJ:2742:统计字符数

    题目链接: 百练OJ:2742:统计字符数 描述:判断一个由a-z这26个字符组成的字符串中哪个字符出现的次数最多 输入:第1行是测试数据的组数n,每组测试数据占1行,是一个由a-z这26个字符组成的 ...

  8. java函数实现进制转换与java实现八进制到十进制的转换(百练OJ:2735:八进制到十进制)

    java进制转换函数介绍:Java二进制.八进制.十进制.十六进制相互转换: 二进制转十进制 Integer.parseInt("0110", 2); 八进制转十进制 Intege ...

  9. 百练OJ:2973:Skew数

    题目链接: 百练OJ:2973:Skew数 描述:在 skew binary表示中, 第 k 位的值xk表示xk*(2k+1-1). 每个位上的可能数字是0 或 1,最后面一个非零位可以是2, 例如, ...

最新文章

  1. IDEA的Docker插件实战(Dockerfile篇)
  2. 第三天-零基础学习python
  3. 刷算法的时候有没有必要自写测试用例?
  4. @@ROWCOUNT 含义
  5. B04_NumPy从已有的数组创建数组(numpy.asarray,numpy.frombuffer,numpy.fromiter)
  6. spring.shardingsphere.rules.sharding.sharding-algorithms.database_inline.props‘ is not valid
  7. Linux的概念与体系 7. Linux进程基础(转载)
  8. Mybatis中强大的resultMap
  9. Hive UDF开发
  10. 数据库__配置ODBC及附加数据库的方法
  11. JavaScript 教程+代码(下)
  12. 2021-08-23:启动idea项目时,控制台显示java程序包不存在,解决办法:Error:java xxxx 程序包不存在
  13. 谷歌浏览器扩展程序XDM_这才是谷歌浏览器的正确打开方式,有效节省内存占用,流畅飞起...
  14. 红亚太学链之区块链技术深度剖析第7章
  15. Android程序员春招三面蚂蚁金服,7年老Android一次坑爹的面试经历,先睹为快
  16. 软件测试精品书单推荐指南!
  17. Halide:简化图像编程
  18. 移动端前端框架UI库(Frozen UI、WeUI、SUI Mobile)
  19. 对于网页代码的调试方法
  20. MySQL实训666666

热门文章

  1. NPDP产品经理认证:产品营销组合的4P管理
  2. 计算机组成原理---期末复习题
  3. 蒋鑫鸿:9.7黄金现价行情趋势分析黄金原油价格涨跌分析及投资建议
  4. muduo网络库学习总结:基本架构及流程分析
  5. 什么是“螃蟹文化”?
  6. 大数据时代 命令行技术过时了吗?
  7. 聊聊ChatGPT是如何组织对话的
  8. sequence的作用和用法
  9. 【ZYNQ_LINUX】设备树分析1
  10. java测试网络延时_Java如何实现延时访问