【哈夫曼树】4080:Huffman编码树

匿名 (未验证) 提交于 2019-12-03 00:27:02

4080:Huffman编码树

1000ms
65536kB
描述

构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权。使得这个扩充二叉树的叶节点带权外部路径长度总和最小:

Wi:每个节点的权值。

Li:根节点到第i个外部叶子节点的距离。

编程计算最小外部路径长度总和。

输入
第一行输入一个整数n,外部节点的个数。第二行输入n个整数,代表各个外部节点的权值。
2<=N<=100
输出
输出最小外部路径长度总和。
样例输入
41 1 3 5
样例输出
17

哈夫曼树类题目比较单一,套模板即可。

#include<iostream> #include<stdio.h> #include<queue> using namespace std; int n,t; int main(){ 	cin>>n; 	priority_queue<int,vector<int>,greater<int> >Q; 	for(int i=0;i<n;i++){ 		cin>>t; 		Q.push(t); 	} 	int ans=0; 	int a,b; 	while(Q.size()>1){ 		a=Q.top(); 		Q.pop(); 		b=Q.top(); 		Q.pop(); 		ans=ans+a+b; 		Q.push(a+b); 	} 	cout<<ans<<endl;  }

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!