《STL》— NYOJ 55 懒省事的小明
- 题目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 懒省事的小明相关推荐
- nyoj 55 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...
- nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
懒省事的小明 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不 ...
- NYOJ 55 懒省事的小明(优先队列)
懒省事的小明 题目来源:点击打开链接 题目信息:由题意可知,每次都让最小的进行合并,再把合并的值放回队列中,如此循环...力气才最小 该题运用到了优先队列,先设定优先级,优先级大的先出对.和 &quo ...
- nyoj 55 懒省事的小明 (优先队列||直接插入)
//优先队列 #include <stdio.h>//老大们可以注意了 ,一定要用long long 啊啊啊 我错了半页 就是一直用的int #include <queue> ...
- nyoj 55懒省事的小明
#include <cstdio> #include <queue>using namespace std;// 本题就是对STL优先队列+哈夫曼树的初步应用 long lon ...
- 南洋理工 55 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同 ...
- nyoj55懒省事的小明
这个题没啥特别的,思想特别简单,就是我们学数据结构的时候,那里面的哈夫曼树的思想,从一组数里面选两个最小的相加,将这两个数从这组数中删除,再将这两个数的和放进去,再从这组数中选两个最小的数以此类推, ...
- NYOJ 懒省事的小明
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...
- 懒省事的小明(优先队列)
懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆 ...
最新文章
- 2018-3-31 ELM极限学习机--笔记(黄广斌PPT,以及极限学习机原理介绍的部分,但是忘记网址了)
- MySQL对查询结果排序
- JDBC操作步骤及数据库连接操作
- Java SpringMVC框架学习(二)httpServeltRequest和Model传值的区别
- 在Spring boot 配置过滤器(filter)
- C++表白代码---一颗心
- 《精解 Windows 10》——2.10 触摸手势
- 2017年高考改革地区:浙江、上海
- 被Json格式化后那可怜的时间
- Oracle 中文转五笔码
- 社交App系统架构--自己亲手写的App系统(含github源码)
- win10麦克风说话没声音_电脑版微信,语音通话无声音的解决
- 挥发性有机物TVOC、VOC、VOCS气体检测+解决方案
- 如何区分静态网页与动态网页
- NVIDIA GeForce Experience 无法登录解决办法
- smartbi v7 Linux,安装Smartbi
- 李沐动手学深度学习V2-RNN循环神经网络原理
- 蓝光原版与蓝光Remux格式到底有什么区别?
- 一篇读懂:Android/iOS手机如何通过音频接口(耳机孔)与外设通信
- NX二次开发-UF_DRF_ask_dim_info获得图纸尺寸属于哪个视图和图纸页