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。

Example Input

3
1 2 9

Example Output

15
#include <iostream>
#include <queue>
#include <string.h>
#include <stdio.h>
using namespace std;
int main()
{int n,a;priority_queue < int,vector<int>,greater<int> > Q;//现在对这个优先队列还不是很了解cin>>n;for(int i=0;i<n;++i){cin>>a;Q.push(a);}int sum=0;while(!Q.empty()){int p=Q.top(),q;Q.pop();if(!Q.empty()){q=Q.top();Q.pop();sum+=p+q;Q.push(p+q);}}printf("%d\n",sum);
}

sdut 2127 树-堆结构练习——合并果子之哈夫曼树 优先队列相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 程序员的你还沉浸在大公司就是螺丝钉?小公司锻炼人?错了!看完即懂
  2. SQL SERVER数据页checksum校验算法
  3. SAP CRM有哪些版本
  4. nginx之Geoip读取地域信息模块
  5. 146. LRU Cache
  6. 文件共享服务器第二部,第二章-构建Samba文件共享服务器.docx
  7. linux+有趣的指令,6个有趣的Linux命令(乐趣终端) - 第二部分
  8. 两个摄像头合成一路_教你把一个摄像机添加到两台录像机
  9. 显示封装_LED显示封装高度集成化道路上,五大封装技术谁能率先拔得头筹?
  10. 简单配置laravel
  11. 【Android进阶学习】设置透明效果的三种方法
  12. 【转】NGUI创建UIRoot后报NullReferenceException的解决办法
  13. python填充nan_Pandas的数据清洗-填充NaN数据
  14. 重复insmod同一个模块导致段错误
  15. 常用软件的静默安装参数
  16. linux efi分区安装grub2,编译UEFI版本Grub2引导多系统文件efi
  17. Tina-TI——小巧好用又高效的原理图仿真软件
  18. 广东工学院计算机教授,胡晓敏(广东工业大学计算机学院副教授)_百度百科...
  19. cypress 断言--should
  20. 蓝牙4.0 BLE 广播包解析

热门文章

  1. MANIFEST.MF文件的格式
  2. MTK6515 android打版软件配置(DrvGen.exe 使用)
  3. 微软宣布推出Windows Embedded Compact 2013正式版
  4. python 16进制加法_在python中追加2个十六进制值
  5. 昼猫笔记 从此告别复杂代码--JavaScript
  6. Michael Jordan:当下的AI其实都是伪“AI”
  7. 恋愛SLG-「猫セット」ゲットチャレンジ!
  8. android中webview loadUrl(String url,Map header)方法和postUrl(String url,byte[] postData)方法同时使用问题;...
  9. EK算法应用,构图(POJ1149)
  10. Silverlight撤消重做功能的实现。