• 题目55
  • 题目信息
  • 运行结果
  • 本题排行
  • 讨论区

懒省事的小明

时间限制:3000 ms  |  内存限制:65535 KB

难度:3

描述

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

输入

第一行输入整数N(0<N<=10)表示测试数据组数。接下来每组测试数据输入包括两行,第一行是一个整数n(1<=n<=12000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。

输出

每组测试数据输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。

样例输入

1
3
1 2 9

样例输出

15

来源

[hzyqazasdf]原创

上传者

hzyqazasdf

      #include<iostream>
#include<stdio.h>
#include<queue>  using namespace std;int main(){int i,m,n,a;long long s,sum,b[12000];priority_queue<int,vector<int>,greater<int> >pri_q;//改变优先级cin>>n;while(n--){while(!pri_q.empty())pri_q.pop();cin>>m;sum=0;for(i=0;i<m;i++){cin>>a;pri_q.push(a);}if(m==1) {cout<<a<<endl;continue;}for(i=0;i<m-1;i++)//赫夫曼树{s=pri_q.top();  pri_q.pop();s+=pri_q.top(); b[i]=s; pri_q.pop();pri_q.push(s);//插新二叉树}for(i=0;i<m-1;i++) sum+=b[i];cout<<sum<<endl;}
return 0;} 

《STL》— NYOJ 55 懒省事的小明相关推荐

  1. nyoj 55 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

  2. nyoj 55 懒省事的小明 优先队列 multiset 还有暴力

    懒省事的小明 时间限制: 3000 ms  |  内存限制: 65535 KB 难度: 3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不 ...

  3. NYOJ 55 懒省事的小明(优先队列)

    懒省事的小明 题目来源:点击打开链接 题目信息:由题意可知,每次都让最小的进行合并,再把合并的值放回队列中,如此循环...力气才最小 该题运用到了优先队列,先设定优先级,优先级大的先出对.和 &quo ...

  4. nyoj 55 懒省事的小明 (优先队列||直接插入)

    //优先队列 #include <stdio.h>//老大们可以注意了 ,一定要用long long 啊啊啊 我错了半页 就是一直用的int #include <queue> ...

  5. nyoj 55懒省事的小明

    #include <cstdio> #include <queue>using namespace std;// 本题就是对STL优先队列+哈夫曼树的初步应用 long lon ...

  6. 南洋理工 55 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |           内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同 ...

  7. nyoj55懒省事的小明

    这个题没啥特别的,思想特别简单,就是我们学数据结构的时候,那里面的哈夫曼树的思想,从一组数里面选两个最小的相加,将这两个数从这组数中删除,再将这两个数的和放进去,再从这组数中选两个最小的数以此类推, ...

  8. NYOJ 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

  9. 懒省事的小明(优先队列)

    懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...

最新文章

  1. 2018-3-31 ELM极限学习机--笔记(黄广斌PPT,以及极限学习机原理介绍的部分,但是忘记网址了)
  2. MySQL对查询结果排序
  3. JDBC操作步骤及数据库连接操作
  4. Java SpringMVC框架学习(二)httpServeltRequest和Model传值的区别
  5. 在Spring boot 配置过滤器(filter)
  6. C++表白代码---一颗心
  7. 《精解 Windows 10》——2.10 触摸手势
  8. 2017年高考改革地区:浙江、上海
  9. 被Json格式化后那可怜的时间
  10. Oracle 中文转五笔码
  11. 社交App系统架构--自己亲手写的App系统(含github源码)
  12. win10麦克风说话没声音_电脑版微信,语音通话无声音的解决
  13. 挥发性有机物TVOC、VOC、VOCS气体检测+解决方案
  14. 如何区分静态网页与动态网页
  15. NVIDIA GeForce Experience 无法登录解决办法
  16. smartbi v7 Linux,安装Smartbi
  17. 李沐动手学深度学习V2-RNN循环神经网络原理
  18. 蓝光原版与蓝光Remux格式到底有什么区别?
  19. 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
  20. NX二次开发-UF_DRF_ask_dim_info获得图纸尺寸属于哪个视图和图纸页

热门文章

  1. 天然气地下管道智慧应急指挥系统平台,24小时为你保驾护航
  2. 关于查询和1号的同学学习的课程完全相同的其他同学的信息详细
  3. linux优化网页加载过程,【zz】Linux起步过程中硬件模块的加载
  4. 《Hadoop MapReduce实战手册》一2.8 使用HDFS的Java API
  5. 外观模式(三):抽象外观类,外观模式效果与适用场景
  6. 显示分辨率、刷新率对HDMI线材和速度的要求信息表
  7. Kettle实现共享数据库连接及插入更新组件实例
  8. 计算机实训室英语,计算机英语教学实训设计研究
  9. 最实用SD卡数据恢复教程包你学会!
  10. 北大青鸟:手机软件开发指引