基础练习 Huffuman树

时间限制:1.0s   内存限制:512.0MB

问题描述

  Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。
  给出一列数{pi}={p0, p1, …, pn-1},用这列数构造Huffman树的过程如下:
  1. 找到{pi}中最小的两个数,设为pa和pb,将pa和pb从{pi}中删除掉,然后将它们的和加入到{pi}中。这个过程的费用记为pa +pb。
  2. 重复步骤1,直到{pi}中只剩下一个数。
  在上面的操作过程中,把所有的费用相加,就得到了构造Huffman树的总费用。
  本题任务:对于给定的一个数列,现在请你求出用该数列构造Huffman树的总费用。

  例如,对于数列{pi}={5, 3, 8, 2, 9},Huffman树的构造过程如下:
  1. 找到{5, 3, 8, 2, 9}中最小的两个数,分别是2和3,从{pi}中删除它们并将和5加入,得到{5, 8, 9, 5},费用为5。
  2. 找到{5, 8, 9, 5}中最小的两个数,分别是5和5,从{pi}中删除它们并将和10加入,得到{8, 9, 10},费用为10。
  3. 找到{8, 9, 10}中最小的两个数,分别是8和9,从{pi}中删除它们并将和17加入,得到{10, 17},费用为17。
  4. 找到{10, 17}中最小的两个数,分别是10和17,从{pi}中删除它们并将和27加入,得到{27},费用为27。
  5. 现在,数列中只剩下一个数27,构造过程结束,总费用为5+10+17+27=59。

输入格式

  输入的第一行包含一个正整数n(n<=100)。
  接下来是n个正整数,表示p0, p1, …, pn-1,每个数不超过1000。

输出格式

  输出用这些数构造Huffman树的总费用。

样例输入

5
5 3 8 2 9

样例输出

59

#include<bits/stdc++.h>
#include<queue>
using namespace std;
struct cmp{bool operator()(int x,int y){return x>y;}
};
int main()
{int n,ans;int k; while(cin>>n){priority_queue<int,vector<int>,cmp>q;  //优先队列 ans=0;for(int i=0;i<n;i++){scanf("%d",&k);q.push(k);}while(q.size()>=2){int a=q.top();q.pop();int b=q.top();q.pop();q.push(a+b);ans=ans+a+b;}cout<<ans<<endl; }return 0;
}

基础练习 Huffuman树 (优先队列)相关推荐

  1. 蓝桥杯 试题 基础练习 Huffuman树——13行代码AC

    储备知识: 优先队列→优先队列用法函数详解 万能头文件→#include<bits/stdc++.h> 思路: 最开始笔者网搜了一下哈夫曼树,动辄上百行的代码让人头大(偷懒偷懒) 于是笔者 ...

  2. 蓝桥杯 基础练习 Huffuman树

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  3. [Java] 蓝桥杯BASIC-28 基础练习 Huffuman树

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  4. 蓝桥杯BASIC-28 基础练习 Huffuman树

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  5. 基础练习 Huffuman树 _C语言和C++描述!(Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。   给出一列数{pi}={p0, p1, …, pn-1)

    问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...

  6. 试题 基础练习 Huffuman树(详解)

    资源限制 时间限制:1.0s   内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, ...

  7. [蓝桥杯]试题 基础练习 Huffuman树

    #include<iostream> #include<vector> #include<queue>using namespace std;int main() ...

  8. Huffuman树(java)

    基础练习 Huffuman树 描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huff ...

  9. python【蓝桥杯vip练习题库】—Huffuman树

    Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...

最新文章

  1. OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
  2. 在线报名竞赛网站java源码_我用Java写出了一个QQ!可在线聊天(附源码)~
  3. Execution Order of Event Functions, unity 3d 事件函数的执行顺序
  4. python拨号_python 拨号代码(win10 系统亲测有效)
  5. Python实现一个数组除以一个数
  6. 果然十三香!iPhone13系列正式发布:看到价格后酸了
  7. 让你的Python程序在用户面前以小概率崩溃
  8. mysql语言基础实验报告_sql语言实验报告
  9. VS2022支持.net4.0和.net4.5SDK
  10. is内存地址 id 地址比较 小数据池概念
  11. server-sent events
  12. 【干货】大学本科生零基础如何开始做发明类竞赛项目
  13. H264编码格式--图文解释
  14. Robomaster视觉教程(二)Win10+VS201x+Opencv3.4.x环境搭建
  15. 台式计算机键盘灯打开方式,台式电脑开机时键盘灯不亮,必须要按一下Numlock才会亮,但系统没什么问题。怎么办?...
  16. 云计算技术与应用 - 大数据与云计算
  17. 微信公众号里面使用地图导航
  18. 运维常用命令大全,从入门到精通就靠它了!
  19. 对标金九银十:各大厂最新Java面试真题整理+简历模板
  20. 人工智能ai写作系统,ai智能写作机器人

热门文章

  1. 用户识别率提升 25 倍 | 看神策数据如何利用 ID-Mapping 激活全域营销
  2. 八城联动丨神策 2020 数据驱动用户大会「合肥站」邀您免费参会!
  3. hdu 2433 Travel
  4. hg 全局密码配置。
  5. 异步请求时有时会让js不起作用,那么重新加载js
  6. centos7 python
  7. [实战]MVC5+EF6+MySql企业网盘实战(15)——逻辑重构2
  8. 关于谷歌地图坐标与百度地图坐标的事
  9. WebSocket FlashSocket
  10. social science and IP