nyoj--55--懒省事的小明(STL优先队列)
懒省事的小明
- 描述
-       小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。小明决定把所有的果子合成一堆。 因为小明比较懒,为了省力气,小明开始想点子了:
 每一次合并,小明可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过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 
- 
- 
#include<stdio.h> 
 #include<string.h>
 #include<queue>
 #include<algorithm>
 using namespace std;
 #define LL long long
 priority_queue<int, vector<int>, greater<int> >q;;
 int main()
 {
 int t;
 scanf("%d",&t);
 while(t--)
 {
 int n;
 scanf("%d",&n);
 int a,b;
 while(!q.empty()) q.pop();
 for(int i=0;i<n;i++)
 {
 scanf("%d",&a);
 q.push(a);
 }
 if(n==1)
 printf("%d\n",a);
 else
 {
 LL sum=0;
 while(q.size()>=2)
 {
 a=q.top();q.pop();
 b=q.top();q.pop();
 sum=sum+a+b;
 q.push(a+b);
 }
 printf("%lld\n",sum);
 }
 }
 return 0;
 }
 
nyoj--55--懒省事的小明(STL优先队列)的更多相关文章
- nyoj 55 懒省事的小明【优先队列】
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ... 
- nyoj 55 懒省事的小明(priority_queue优先队列)
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ... 
- nyoj 55 懒省事的小明 优先队列 multiset 还有暴力
		懒省事的小明 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的 ... 
- NYOJ 55 懒省事的小明(哈弗曼树)
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描写叙述 小明非常想吃果子,正好果园果子熟了. 在果园里,小明已经将全部的果子打了下来,并且按果子的不 ... 
- ACM题目————STL练习之 懒省事的小明(优先队列)
		描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.小明决定把所有的果子合成一堆. 因为小明比较懒,为了省力气,小明开始想点子了: 每一 ... 
- ACM 懒省事的小明
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ... 
- 懒省事的小明--nyoj55
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种类分成 ... 
- ny55 懒省事的小明
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而 ... 
- 【ACM】懒省事的小明
		懒省事的小明 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而且按果子的不同种 ... 
随机推荐
- 一个JavaWeb项目中使用的部分技术
			-- 2015年8月8日 1. Web框架: Spring+ SpringMVC + MyBatis Spring: 作为容器.工厂,用于解耦以及管理对象生命周期. 整合各类框架和依赖. MVC : ... 
- Linux命令学习-curl
			作用 curl是利用URL语法的一款强大的网络工具,你可以使用它完成上传下载文件等操作. curl http://www.cnblogs.com 上诉的命令即可将页面内容打印到屏幕上. 常用参数 -o ... 
- BZOJ 1500 splay终结版...
			GSS系列有一丝丝像- 只不过那个是线段树 这个是splay 翻转 插入 删除啥的就是普通的splay 合在一起了而已 //By SiriusRen #include <cstdio> # ... 
- 【转】在IIS上部署你的ASP.NET Core项目
			概述 与ASP.NET时代不同,ASP.NET Core不再是由IIS工作进程(w3wp.exe)托管,而是使用自托管Web服务器(Kestrel)运行,IIS则是作为反向代理的角色转发请求到Kest ... 
- Python爬虫:爬取糗事百科
			网上看到的教程,但是是用正则表达式写的,并不能运行,后面我就用xpath改了,然后重新写了逻辑,并且使用了双线程,也算是原创了吧#!/usr/bin/python# -*- encoding:utf- ... 
- idea的项目中output框出现乱码
			找到tomcat的安装目录中的logging.properties 我的在这里:E:\tools\tomcat\apache-tomcat-8.5.38\conf 改其中的参数 修改前 java.u ... 
- JavaScript中的线程与进程
			定义: 线程分为:单线程和多线程 单线程:一个正在运行的程序(即进行)至少有一个线程,这个线程叫做主线程,只有一个主线程的程序叫做单线程程序,主线程负责执行所有代码的执行(UI展现及刷新.网络请求.本 ... 
- css3之BFC、IFC、GFC和FFC
			CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. What's FC?一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它 ... 
- 利用Java反射机制对实体类的常用操作工具类ObjectUtil
			代码: ObjectUtil类: import java.lang.reflect.Field; import java.math.BigDecimal; import java.text.Simpl ... 
- 粘包_Client
			# from socket import *# import time# ip_port = ('127.0.0.1',8080)# back_log = 5# buffer_size = 1024# ... 
