【洛谷1090】合并果子
题目描述
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。
每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 n-1n−1 次合并之后, 就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。
因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为 11 ,并且已知果子的种类 数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。
例如有 33 种果子,数目依次为 11 , 22 , 99 。可以先将 11 、 22 堆合并,新堆数目为 33 ,耗费体力为 33 。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为 1212 ,耗费体力为 1212 。所以多多总共耗费体力 =3+12=15=3+12=15 。可以证明 1515 为最小的体力耗费值。
输入输出格式
输入格式:
共两行。
第一行是一个整数 n(1\leq n\leq 10000)n(1≤n≤10000) ,表示果子的种类数。
第二行包含 nn 个整数,用空格分隔,第 ii 个整数 a_i(1\leq a_i\leq 20000)a
i
(1≤a
i
≤20000) 是第 ii 种果子的数目。
输出格式:
一个整数,也就是最小的体力耗费值。输入数据保证这个值小于 2^{31}2
31
。
输入输出样例
输入样例#1: 复制
3
1 2 9
输出样例#1: 复制
15
说明
对于30%的数据,保证有n \le 1000n≤1000:
对于50%的数据,保证有n \le 5000n≤5000;
对于全部的数据,保证有n \le 10000n≤10000。
#include<cstdio> #include<iostream> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #include<queue> typedef long long ll; using namespace std; priority_queue<int,vector<int>,greater<int> >a; //建一个小根堆 int n,x,y,ans; int main(){//freopen("1090.in","r",stdin);//freopen("1090.out","w",stdout);cin>>n;for(int i=1;i<=n;i++){scanf("%d",&x);a.push(x);//入列 }for(int i=1;i<n;i++){x=a.top(); a.pop();//最小,出列 y=a.top(); a.pop();//次小,出列 ans+=x+y;a.push(x+y);//将合并后的时间入列 }cout<<ans;return 0; }
转载于:https://www.cnblogs.com/wuhu-JJJ/p/11133531.html
【洛谷1090】合并果子相关推荐
- 洛谷1090 合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- 洛谷P1090 合并果子
合并果子 题目链接 这个只能用于结构体中 struct item {int val;friend bool operator < (item a,item b){return a.val > ...
- 洛谷——P1090 合并果子
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- 洛谷 T63713 合并果子
题目: 小Z很喜欢在果林里漫步,望着树上的果子,忍不住开始摘果子了. 他把果林里的n棵树上的果子都摘下来了(这也太过分了吧)!他还无聊地输出了每一棵果树上的果子个数$num[i]$. 小Z又决定把所有 ...
- [LUOGU] 1090 合并果子
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆.每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可以看 ...
- 洛谷 P1775 合并石子(弱化版)
文章目录 合并石子(弱化版) 一.题目描述 二.思路 三.代码 合并石子(弱化版) 一.题目描述 https://www.luogu.com.cn/problem/P1775 设有 N(N \le 3 ...
- 洛谷 P2300 合并神犇 解题报告
P2300 合并神犇 题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不 ...
- 合并果子(洛谷-P1090)
题目描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和.可 ...
- 贪心算法——洛谷(P1090)[NOIP2004]合并果子
该题目也属于经典的贪心算法,在这里熟悉C++里优先队列的使用. 需要导入头文件: #include<queue> 从这个问题可以深挖出神奇的哈夫曼树问题. 因为这题里合并的是二叉树,所 ...
最新文章
- 单向链表JAVA代码
- linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本
- Vue如何获取当前时间
- 听说过Netflix的Chaos Monkey吗?不用羡慕,我们.NET也有
- BAT人脸识别功能第二步-人脸检测
- ES面试基础知识要点
- 每天快走一小时,身体会有什么变化?
- exp/imp迁移表
- 数独程序求解世界最难数独——JAVA版
- macbook删除windows后合并磁盘分区
- iOS程序拨打电话方法
- 基于SpringBoot实现邮箱找回密码
- Django教程 —— Django入门
- 图像算法工程师岗位的主要职责(合集)
- 已知鸡和兔的总数量n,总脚数为m。输入n和m,依次输出鸡和兔的数目。如果无解,输出“no answer”。 将下面的代码填写完整。
- 手机与计算机连接方式,WM(Windowsm mobile)智能手机与电脑联接的几种方法
- Linux -- 磁盘存储管理 分区类型(MBR,GPT)
- 72、【backtrader期货策略】十大经典策略-Aberration策略(布林带策略)(2021-10-29更新)
- java 时区_世界时区和Java时区详解
- 首个中文全词类知识库-百科知识树 开源啦!搭配开源标注工具,一招搞定知识关联!...
热门文章
- OpenShift 4 之 GitOps(8)用ArgoCD实现的应用迁移、金丝雀部署、DR
- (十)DeepFaceLab:预包装的DIY深度伪造替代品
- 解决重复出现问题的 (LINQ) 方法示例
- 将ONNX对象检测模型转换为iOS Core ML(一)
- .NET Core 3.0 RC1 发布,最终版本将于下周发布
- sentinel接入网关应用_阿里sentinel配合gateway 网关限流
- multism中ui和uo应该怎么表示_欧阳娜娜上节目痛哭,坦言压力太大睡不着,明星都怎么了?...
- 计算机系统具有整体性质,2017年计算机二级《公共基础》重点知识
- sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap
- 物联网卡设置_物联网卡该怎样设置和使用——酷易充物联