基础练习 Huffuman树 (优先队列)
基础练习 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树 (优先队列)相关推荐
- 蓝桥杯 试题 基础练习 Huffuman树——13行代码AC
储备知识: 优先队列→优先队列用法函数详解 万能头文件→#include<bits/stdc++.h> 思路: 最开始笔者网搜了一下哈夫曼树,动辄上百行的代码让人头大(偷懒偷懒) 于是笔者 ...
- 蓝桥杯 基础练习 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- [Java] 蓝桥杯BASIC-28 基础练习 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- 蓝桥杯BASIC-28 基础练习 Huffuman树
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- 基础练习 Huffuman树 _C语言和C++描述!(Huffman树在编码中有着广泛的应用。在这里,我们只关心Huffman树的构造过程。 给出一列数{pi}={p0, p1, …, pn-1)
问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman树的过程如下: 1. ...
- 试题 基础练习 Huffuman树(详解)
资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, ...
- [蓝桥杯]试题 基础练习 Huffuman树
#include<iostream> #include<vector> #include<queue>using namespace std;int main() ...
- Huffuman树(java)
基础练习 Huffuman树 描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huff ...
- python【蓝桥杯vip练习题库】—Huffuman树
Huffuman树 问题描述 Huffman树在编码中有着广泛的应用.在这里,我们只关心Huffman树的构造过程. 给出一列数{pi}={p0, p1, -, pn-1},用这列数构造Huffman ...
最新文章
- OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题
- 在线报名竞赛网站java源码_我用Java写出了一个QQ!可在线聊天(附源码)~
- Execution Order of Event Functions, unity 3d 事件函数的执行顺序
- python拨号_python 拨号代码(win10 系统亲测有效)
- Python实现一个数组除以一个数
- 果然十三香!iPhone13系列正式发布:看到价格后酸了
- 让你的Python程序在用户面前以小概率崩溃
- mysql语言基础实验报告_sql语言实验报告
- VS2022支持.net4.0和.net4.5SDK
- is内存地址 id 地址比较 小数据池概念
- server-sent events
- 【干货】大学本科生零基础如何开始做发明类竞赛项目
- H264编码格式--图文解释
- Robomaster视觉教程(二)Win10+VS201x+Opencv3.4.x环境搭建
- 台式计算机键盘灯打开方式,台式电脑开机时键盘灯不亮,必须要按一下Numlock才会亮,但系统没什么问题。怎么办?...
- 云计算技术与应用 - 大数据与云计算
- 微信公众号里面使用地图导航
- 运维常用命令大全,从入门到精通就靠它了!
- 对标金九银十:各大厂最新Java面试真题整理+简历模板
- 人工智能ai写作系统,ai智能写作机器人