Huffman编码树
来源:互联网 发布:php 使用openoffice 编辑:程序博客网 时间:2024/06/08 10:00
2:Huffman编码树
- 总时间限制:
- 1000ms
- 内存限制:
- 65535kB
- 描述
构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权。使得这个扩充二叉树的叶节点带权外部路径长度总和最小:
Min( W1 * L1 + W2 * L2 + W3 * L3 + … + Wn * Ln)
Wi:每个节点的权值。
Li:根节点到第i个外部叶子节点的距离。
编程计算最小外部路径长度总和。
- 输入
- 第一行输入一个整数t,代表测试数据的组数。
对于每组测试数据,第一行输入一个整数n,外部节点的个数。第二行输入n个整数,代表各个外部节点的权值。
2<=N<=100 - 输出
- 输出最小外部路径长度总和。
- 样例输入
231 2 341 1 3 5
- 样例输出
917
- 提示
- 仅考查huffman树的建立,数据范围小,可以不需要使用堆结构.
不过鼓励使用第一题实现的堆来寻找最小和次小元素。 #include<iostream>#include<cmath>#include<cstring>#include<algorithm>#include<iomanip>#include<queue>#include<stack>#include<vector>#include<set>#include<map>using namespace std;priority_queue<int,vector<int>,greater<int> >q;int main(){int Test;cin>>Test;while(Test--){while(!q.empty())q.pop();int n,a;cin>>n;int sum=0;while(n--){cin>>a;q.push(a);}while(q.size()>1){int m=q.top();q.pop();int k=q.top();q.pop();sum+=(m+k);q.push(m+k);}cout<<sum<<endl;}return 0;}
阅读全文
0 0
- Huffman树&&Huffman编码
- huffman树和huffman编码
- huffman树和huffman编码
- Huffman树与Huffman编码
- Huffman编码(Huffman树)
- Huffman树与Huffman编码
- Huffman树和Huffman编码
- Huffman树与Huffman编码
- Huffman树与Huffman编码
- Huffman树与Huffman编码
- 数据结构 树 Huffman编码
- Huffman树编码
- Huffman编码树
- Huffman编码树
- Huffman编码树
- Huffman 编码树
- 3:Huffman编码树
- Huffman编码树
- iOS 自动布局 关于 '控件拉伸' 或者 '内容压缩'的控制
- 64K异常,method ID not in [0,0xffff]:65536
- winform 闪烁
- linux下的一个简单线程安全内存池实现
- Echarts 折柱混合图
- Huffman编码树
- Spark性能优化指南——基础篇
- 阿牛的EOF牛肉串
- 两个栈实现一个队列和两个队列实现一个栈
- httpclient的使用
- error: jump to label ‘xxxxx’ [-fpermissive]
- Google算法题:吹气球/合石子(区间动态规划)
- 【selenium安装】selenium安装教程
- java将unicode码转换为中文