1063 合并果子
时间限制: 1 s
空间限制: 128000 KB
题目等级 : 钻石 Diamond
题解
题目描述 Description
在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。

每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。

因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每个果子重量都为1,并且已知果子的种类数和每种果子的数目,你的任务是设计出合并的次序方案,使多多耗费的体力最少,并输出这个最小的体力耗费值。

例如有3种果子,数目依次为1,2,9。可以先将1、2堆合并,新堆数目为3,耗费体力为3。接着,将新堆与原先的第三堆合并,又得到新的堆,数目为12,耗费体力为12。所以多多总共耗费体力=3+12=15。可以证明15为最小的体力耗费值。

输入描述 Input Description
输入包括两行,第一行是一个整数n(1<=n<=10000),表示果子的种类数。第二行包含n个整数,用空格分隔,第i个整数ai(1<=ai<=20000)是第i种果子的数目。

输出描述 Output Description
输出包括一行,这一行只包含一个整数,也就是最小的体力耗费值。输入数据保证这个值小于231。

样例输入 Sample Input
3
1 2 9

样例输出 Sample Output
15

数据范围及提示 Data Size & Hint
对于30%的数据,保证有n<=1000:
对于50%的数据,保证有n<=5000;
对于全部的数据,保证有n<=10000。

写在前面
其实这道题很弱的,合并石子都是黄金,这个简单的贪心却是钻石(:з」∠),不知道上传的人怎么想的,可能是数据削弱了吧
—————————————又又是分割线—————————————
解题思路:贪心,先升序排序,然后合并前两堆,将合并得出的结果与后面的果子进行比较,就是再把结果放到序列中并使序列仍然有序,利用的是插入排序的思想(这里最好不要每次都排一遍,可能会T掉)
贪心代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
long long n,a[10001];
long long ans;//记录最终答案
main()
{scanf("%lld",&n);for (int i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a+1,a+n+1);ans=0;for (int i=2;i<=n;i++){a[i]=a[i-1]+a[i];ans+=a[i];int k=i;while  (a[k]>a[k+1]&&k<n)//比较,一直交换直到找到第一个比它大的{swap(a[k],a[k+1]);k++;}}printf("%lld",ans);
}

当然这个题目的标准方法是堆,之前不是很会,今天(2015.10.27)补上std:

#include<cstdio>
#include<iostream>
#include<queue>
using namespace std;
int n,ans;
priority_queue <int> team;
main()
{scanf("%d",&n);for (int i=1,x;i<=n;i++){scanf("%d",&x);team.push(-x);}for (int i=1;i<=n-1;i++){int x=0;x-=team.top(); team.pop();x-=team.top();team.pop();ans+=x;team.push(-x);} printf("%d",ans);
}

【codevs1063NOIP04PJ】合并果子,贪心の钻石相关推荐

  1. PAT甲级1125 Chain the Ropes:[C++题解]贪心、优先队列、合并果子

    文章目录 题目分析 题目来源 题目分析 来源:acwing 板子题:合并果子合并果子优先队列 分析:贪心策略是: 每次取最短的两条绳子a和b.该两条绳子合并为1条绳子,且长度变为a+b2\frac{a ...

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

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

  3. 每日四题打卡-4.15:耍杂技的牛/贪心绝对值不等式-货仓选址/贪心排序不等式-排队打水/huffman哈夫曼树-合并果子

    耍杂技的牛 具体:https://blog.csdn.net/qq_27262727/article/details/105515507 农民约翰的N头奶牛(编号为1..N)计划逃跑并加入马戏团,为此 ...

  4. 合并果子_tyvj1066_vijos1097_codevs1063_贪心+堆

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

  5. P1090 合并果子 / [USACO06NOV] Fence Repair G(贪心+优先队列) 洛谷

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

  6. 贪心:Huffman树(合并果子)、排序不等式(排队打水)

    Huffman树 AcWing 148. 合并果子 在一个果园里,达达已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆. 达达决定把所有的果子合成一堆. 每一次合并,达达可以把两堆果子合并 ...

  7. Vijos p1097 合并果子

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

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

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

  9. 1836:【04NOIP提高组】合并果子(三种做法)

    一,贪心 每次只要合并果子数量最小的两堆,再计算耗费的体力值即可. 代码: #include <bits/stdc++.h> using namespace std; int ans,n, ...

最新文章

  1. R语言gc函数垃圾回收实战
  2. RocketMQ 实战 集群监控平台搭建
  3. ASP.NET中禁止继承IIS中web.config根目录的配置
  4. python退出mainloop_不要阻塞tkinter的mainloop
  5. 我哥以前是做小本生意的,一年花销除外能存个十二万的样子
  6. PhoneGap android环境设置
  7. excel自动排班表_18个施工进度计划横道图,Excel版自动生成表,操作简单明了
  8. 什么是GMSK调制-高斯最小移位键控
  9. JPA如何查询部分字段
  10. 通信工程/电子信息工程 保研/预推免/夏令营 面试真题/经验
  11. 书摘---创业36条军规4:如何组建公司
  12. v.douyin.com/xxx抖音网址官方生成制作抖音缩短口令网址php接口方法
  13. 【转】D365 FO第三方集成(四)---客户端调用
  14. ★ 最长递增子序列问题 (最多不相交路径)(分层思想) 网络流最大流
  15. 客户体验是什么?如何提升用户体验从而提高产品成单率?必读!
  16. 联想新服务器怎么装系统教程,联想小新重装win7系统的详细教程图解
  17. SaaS是什么,目前主流的国内SAAS平台提供商有哪些?
  18. Oracle clob怎么存储超过4000长度的数据,你了解吗
  19. 探讨:电子商务网站用什么技术开发最好?
  20. Spark:spark submit参数及调优 perfect

热门文章

  1. 挑战10个最难的Java面试题(附答案)【下】
  2. Spring和SpringMVC整合
  3. Convolutional networks for fast, energy-efficient neuromorphic computing
  4. 关于如何在word中写公式的方法
  5. M1芯片Mac使用原生brew安装软件速度过慢的解决办法
  6. imovie打开视频卡死解决办法
  7. PHP文字转语音排号声音,PC端好用的文字转语音软件有哪些?三款简单易用的软件推荐给你!...
  8. centos mysql 主从_Centos下MySQL主从同步配置
  9. 如何设置input表单根据表单内的数据自动增高_「第三天」学美术的英语小白如何从装修行业转为互联网前端...
  10. inline函数_逼近函数(2)