树-堆结构练习——合并果子之哈夫曼树
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所消耗体力之和。
因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

Input
第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个ai(1<=ai<=20000)是第i个果子的数目。

Output
输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于2^31。

Sample Input
3
1 2 9

#include <stdio.h>
#include <stdlib.h>
#include <queue>
using namespace std;int main()
{
priority_queue<int, vector<int>,greater <int> >q;
int n,sum=0,m,a,b,c;
cin>>n;
for(int i=0; i<n; i++)
{cin>>m;;q.push(m);
}
while(!q.empty())
{a=q.top();q.pop();if(!q.empty()){b=q.top();q.pop();c=a+b;sum+=c;q.push(c);}
}
printf("%d\n",sum);return 0;
}

树-堆结构练习——合并果子之哈夫曼树(是最优二叉树题目的缩影)相关推荐

  1. SDUT 2127 树-堆结构练习——合并果子之哈夫曼树(优先队列)

    树-堆结构练习--合并果子之哈夫曼树 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Problem Description ...

  2. 树-堆结构练习——合并果子之哈夫曼树

    树-堆结构练习--合并果子之哈夫曼树 Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆 ...

  3. 树-堆结构练习——合并果子之哈夫曼树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descrip

    树-堆结构练习--合并果子之哈夫曼树 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descrip ...

  4. 树-堆结构练习——合并果子之哈夫曼树oj

    树-堆结构练习--合并果子之哈夫曼树 Time Limit: 1000MS Memory Limit: 65536KB Problem Description 在一个果园里,多多已经将所有的果子打了下 ...

  5. L - 树-堆结构练习——合并果子之哈夫曼树

    L - 树-堆结构练习--合并果子之哈夫曼树 题目链接: link. 题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合 ...

  6. java合并果子_C++(STL)树-堆结构练习——合并果子之哈夫曼树

    priority_queue 对于基本类型的使用方法相对简单. 他的模板声明带有三个参数,priority_queue Type 为数据类型, Container 为保存数据的容器,Functiona ...

  7. sdut 2127 树-堆结构练习——合并果子之哈夫曼树 优先队列

    Problem Description 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的 ...

  8. Vijos P1097 合并果子【哈夫曼树+优先队列】

    描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看 ...

  9. 哈夫曼树编码和译码c语言,C++哈夫曼树编码和译码的实现

    78 /*-----------创建工作---------------------------*/ 79     int s1,s2; 80     for (int i = n + 1; i < ...

最新文章

  1. Matplotlib基本用法
  2. TypeScript学习笔记(七) - 命名空间
  3. 使用lisp函数控制cursor
  4. 利用反汇编手段解析C语言函数
  5. LeetCode刷题: 整数反转
  6. layer ajax 用法,layer加载遮罩层使用 Ajax Loading Demo
  7. 你要知道的MacOS哪些优缺点
  8. php5中this_self_parent关键字用法讲解
  9. java实现用户分组,根据用户指定的组分组数据
  10. Android开发简易计算器
  11. iOS 应用下载链接获取
  12. 荣耀magicbook15C语言,荣耀MagicBook 15 2021版评测:轻薄机身+强悍性能 专为高效率办公而生...
  13. 写个神经网络,让她认得我`(๑•ᴗ•๑)(Tensorflow,opencv,dlib,cnn,人脸识别)
  14. 北斗导航开始提供全球服务;个人所得税 App 已上线
  15. HTML基础选择器之属性选择器的基本介绍
  16. python if else写在一行_关于python:将if-elif-else语句放在一行上?
  17. 北京自考中心平台登陆方法信息整理
  18. 【Java】三种等待机制
  19. 建设MES系统需要哪些数据支撑?
  20. webpack之soure-map

热门文章

  1. lisp 里在特定图层写字_有温度的“城市客厅”——从景观设计角度感受天目里...
  2. linux整行剪切_云计算人员如何提高效率 要掌握哪些Linux命令
  3. main run方法没用_多线程:解决Runnable接口无start()方法的问题
  4. 试图将驱动程序添加到存储区_云存储——终于等到你,还好没放弃
  5. Ubuntu-20.04开机黒屏出现“dev/sda ... clean ... blocks”的信息
  6. ESP32开发板开源啦 ESP32-IOT-KIT全开源物联网开发板
  7. 深度学习之RNN、LSTM、GRU篇
  8. MySQL学习记录 (四) ----- SQL数据管理语句(DML)
  9. mysql主从复制-主库已有数据
  10. 初探内核之《Linux内核设计与实现》笔记下