题目描述

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过 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】合并果子相关推荐

  1. 洛谷1090 合并果子

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

  2. 洛谷P1090 合并果子

    合并果子 题目链接 这个只能用于结构体中 struct item {int val;friend bool operator < (item a,item b){return a.val > ...

  3. 洛谷——P1090 合并果子

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

  4. 洛谷 T63713 合并果子

    题目: 小Z很喜欢在果林里漫步,望着树上的果子,忍不住开始摘果子了. 他把果林里的n棵树上的果子都摘下来了(这也太过分了吧)!他还无聊地输出了每一棵果树上的果子个数$num[i]$. 小Z又决定把所有 ...

  5. [LUOGU] 1090 合并果子

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

  6. 洛谷 P1775 合并石子(弱化版)

    文章目录 合并石子(弱化版) 一.题目描述 二.思路 三.代码 合并石子(弱化版) 一.题目描述 https://www.luogu.com.cn/problem/P1775 设有 N(N \le 3 ...

  7. 洛谷 P2300 合并神犇 解题报告

    P2300 合并神犇 题目背景 loidc来到了NOI的赛场上,他在那里看到了好多神犇. 题目描述 神犇们现在正排成一排在刷题.每个神犇都有一个能力值p[i].loidc认为坐在附近的金牌爷能力参差不 ...

  8. 合并果子(洛谷-P1090)

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

  9. 贪心算法——洛谷(P1090)[NOIP2004]合并果子

    该题目也属于经典的贪心算法,在这里熟悉C++里优先队列的使用. 需要导入头文件:   #include<queue> 从这个问题可以深挖出神奇的哈夫曼树问题. 因为这题里合并的是二叉树,所 ...

最新文章

  1. 单向链表JAVA代码
  2. linux启动java jar文件_推荐:Linux启动Java程序jar包Shell脚本
  3. Vue如何获取当前时间
  4. 听说过Netflix的Chaos Monkey吗?不用羡慕,我们.NET也有
  5. BAT人脸识别功能第二步-人脸检测
  6. ES面试基础知识要点
  7. 每天快走一小时,身体会有什么变化?
  8. exp/imp迁移表
  9. 数独程序求解世界最难数独——JAVA版
  10. macbook删除windows后合并磁盘分区
  11. iOS程序拨打电话方法
  12. 基于SpringBoot实现邮箱找回密码
  13. Django教程 —— Django入门
  14. 图像算法工程师岗位的主要职责(合集)
  15. 已知鸡和兔的总数量n,总脚数为m。输入n和m,依次输出鸡和兔的数目。如果无解,输出“no answer”。 将下面的代码填写完整。
  16. 手机与计算机连接方式,WM(Windowsm mobile)智能手机与电脑联接的几种方法
  17. Linux -- 磁盘存储管理 分区类型(MBR,GPT)
  18. 72、【backtrader期货策略】十大经典策略-Aberration策略(布林带策略)(2021-10-29更新)
  19. java 时区_世界时区和Java时区详解
  20. 首个中文全词类知识库-百科知识树 开源啦!搭配开源标注工具,一招搞定知识关联!...

热门文章

  1. OpenShift 4 之 GitOps(8)用ArgoCD实现的应用迁移、金丝雀部署、DR
  2. (十)DeepFaceLab:预包装的DIY深度伪造替代品
  3. 解决重复出现问题的 (LINQ) 方法示例
  4. 将ONNX对象检测模型转换为iOS Core ML(一)
  5. .NET Core 3.0 RC1 发布,最终版本将于下周发布
  6. sentinel接入网关应用_阿里sentinel配合gateway 网关限流
  7. multism中ui和uo应该怎么表示_欧阳娜娜上节目痛哭,坦言压力太大睡不着,明星都怎么了?...
  8. 计算机系统具有整体性质,2017年计算机二级《公共基础》重点知识
  9. sqlmap md5怎么解密_三十九,hackthebox渗透之DirBuster扫描路径及Sqlmap
  10. 物联网卡设置_物联网卡该怎样设置和使用——酷易充物联