BIT 1020 小白鼠--赫夫曼树(最优二叉树)

原创 2013年12月03日 10:56:09

http://acm.bit.edu.cn/mod/programming/view.php?a=506

经教主的指导+自己的研究,终于搞懂这道题了。。。

赫夫曼树(最优二叉树)

构造 最优二叉树,求树的带全路径长度


#include<stdio.h>
#include<string.h>
#include<queue>
#include<functional>
using namespace std;

int main()
{
	int i,j,k;
	int t;
	scanf("%d",&t);
	priority_queue<double,vector<double>,greater<double> > q;  //注意和下面的写法,有个空格的区别,这么写就是对的
	//priority_queue<double,vector<double>,greater<double>> q;  这么写就编译不了。。
	while(t--)
	{
		int n;
		while(!q.empty())
			q.pop();
		scanf("%d",&n);
		for(i=0;i<n;i++)
		{
			double temp;
			scanf("%lf",&temp);
			q.push(temp);
		}
		double ans=0;
		while(q.size()!=1)
		{
			double t1,t2;
			t1=q.top(),q.pop();
			t2=q.top(),q.pop();
			ans+=(t1+t2);
			q.push(t1+t2);
		}
		if(n==1)
			printf("%.2lf\n",q.top());
		else
			printf("%.2lf\n",ans);
	}
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

1020 小白鼠:哈夫曼树

1020 小白鼠 小白鼠 时间限制: 1秒  内存限制: 64M Description 有 n 个瓶子,已知其中有且仅有一个瓶子的饮料有毒。现在我们想知道哪个瓶子的饮料有毒,...

构造最优二叉树-赫夫曼(Huffman)树算法

http://blog.163.com/zhoumhan_0351/blog/static/3995422720098275836215/ 构造最优二叉树-赫夫曼(Huffman)树算法   ...

赫夫曼树(最优二叉树)-数据结构(16)

一、例子引出问题 参考书上P144-P149 。在我们计算成绩排名的时候,我们大部分人的成绩都在中等的,还有一小部分在极优和极差中,服从正态分布。因此出现了让有权重的树,为了将经常用到的判断放在前面...

6.6.1最优二叉树(赫夫曼树)

6.6.1最优二叉树(赫夫曼树)

数据结构学习笔记 --- 最优二叉树(赫夫曼树)

1. 引言 最优二叉树是带权路径长度最短的二叉树。根据结点的个数,权值的不同,最优二叉树的形状也各不相同。它们的共同点是:带权值的结点都是叶子结点。权值越小的结点,其到根结点的路...
  • whz_zb
  • whz_zb
  • 2012-02-28 23:49
  • 1210

[C/C++] 构造最优二叉树-赫夫曼(哈夫曼、Huffman)树算法实现

一、基本概念 1、赫夫曼(Huffman)树又称最优二叉树或最优搜索树,是一种带权路径长度最短的二叉树。在许多应用中,常常赋给树中结点一个有某种意义的实数,称此实数为该结点的权。从树根结点到该结点之...

Huffman tree(赫夫曼树、霍夫曼树、哈夫曼树、最优二叉树)

Huffman tree(赫夫曼树、霍夫曼树、哈夫曼树、最优二叉树)flyfish 2015-8-1Huffman tree因为翻译不同所以有其他的名字 赫夫曼树、霍夫曼树、哈夫曼树 定义引用自严蔚...

最优二叉树(赫夫曼树、赫夫曼树和赫夫曼编码的存储结构)

最优二叉树是带权路径长度最短的二叉树。根据结点的个数、权值的不同,最优二叉 树的形状也各不相同。图634 是3 棵最优二叉树的例子。它们的共同特点是:带权值的 结点都是叶子结点。权值越小的结点,...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)