题目:

Problem D: MJJ玩磁铁

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 139  Solved: 9
[Submit][Status][Web Board][Creator:eetze]

Description

MJJ在河北的ACM圈子中可谓是小有名气,毕竟当初一个人挑起队秒天秒地秒一切。在训练赛上多次AK江湖传闻一天不A10题晚上就睡不着觉。正是这么刻苦这么努力的MJJ,收货了一大批女粉丝,但是MJJ除了ACM以外却只喜欢玩磁铁。MJJ的班级有(N+1)个同学,(包括他自己)每个人都有手中都有一个磁铁,重量为W。每次MJJ都可以做以下行为之一:
    
1.每次MJJ可以挑战他的一个同学。MJJ选择一个属于他的磁铁,并把这个磁铁和他的同学的磁铁放在桌子上,用一个短距离让这两个磁铁相互吸引。假设桌子是绝对光滑的,两个磁铁会向中间移动。如果MJJ的磁铁速度比同学的磁铁速度慢,MJJ就会取得胜利,并且得到同学手中的磁铁。

2.MJJ极其擅长手工,每次他可以选择自己的两个磁铁,并将它们组合成一个新的磁铁。如果这两块磁铁的重量是U和V,那么新磁铁的重量将是(U+V),而这个操作将会消耗掉他(U+V)个单位的体力。

MJJ在今天的训练后已经非常的累了,所以他将这个问题留给了你。MJJ期望在获得最大的磁铁重量的前提下消耗最少的体力,请计算出MJJ最终的磁铁重量和其消耗的体力。

Input

第一行包含一个整数T(1≤T≤6),表示有T个测试用例。
对于每个测试用例:第一行包含一个整数N(1≤N≤100000),表示同学人数。
第二行包含N个整数W1…WN(1≤W≤100000),表示每个同学拥有的磁铁的重量。
最后一行包含一个整数M(1≤M≤100000),表示MJJ磁铁的重量。

Output

对于每个测试用例,首先输出一行“Case X:”(不带引号,X为测试用例编号,从1开始),然后输出带有两个整数的行:第一个是MJJ最终的磁铁重量,第二个是MJJ所需消耗的体力。

Sample Input

1
3
2 3 6
5

Sample Output

Case #1:
16 31 分析:如果你手中的磁铁加上你迎过来的磁铁的和能够赢过来下一块磁铁,那么就把磁铁加入到你的手中,
磁铁的合并方式永远都应该找手中最小的两个去和才能保证最小花费,因为磁铁最后要全部合在一起,所以你不用考虑合并磁铁赢取磁铁的问题,只需要判断手中所有磁铁的和是否大于下一块磁铁
当然,磁铁的重量要升序排列。 代码:
 import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.Scanner; public class Main {
public static Scanner sc=new Scanner(System.in);
public static void main(String args[]) {
int time=sc.nextInt();
for(int n=0;n<time;++n)
res(n+1);
}
public static void res(int times) {
PriorityQueue<Long> pq=new PriorityQueue<>();
int num=sc.nextInt();
long[] sti=new long[num];
for(int n=0;n<num;++n) {
sti[n]=sc.nextLong();
}
Arrays.sort(sti);
long me=sc.nextLong();
pq.add(me);
long cost=0;
for(int n=0;n<num;++n)
if(me>sti[n]) {
pq.add(sti[n]);
me+=sti[n];
}
else
break;
while(pq.size()>1) {
Long r1=pq.poll();
Long r2=pq.poll();
cost+=r1+r2;
pq.add(r1+r2);
}
System.out.println("Case #"+times+":");
System.out.println(me+" "+cost);
}
}

MJJ玩磁铁的更多相关文章

  1. 玩转spring boot——快速开始

    开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...

  2. [C#] 软硬结合第二篇——酷我音乐盒的逆天玩法

    1.灵感来源: LZ是纯宅男,一天从早上8:00起一直要呆在电脑旁到晚上12:00左右吧~平时也没人来闲聊几句,刷空间暑假也没啥动态,听音乐吧...~有些确实不好听,于是就不得不打断手头的工作去点击下 ...

  3. [C#] 了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数

    了解过入口函数 Main() 吗?带你用批处理玩转 Main 函数 目录 简介 特点 方法的参数 方法的返回值 与批处理交互的一个示例 简介 我们知道,新建一个控制台应用程序的时候,IDE 会同时创建 ...

  4. 玩转spring boot——开篇

    很久没写博客了,而这一转眼就是7年.这段时间并不是我没学习东西,而是园友们的技术提高的非常快,这反而让我不知道该写些什么.我做程序已经有十几年之久了,可以说是彻彻底底的“程序老炮”,至于技术怎么样?我 ...

  5. 玩转spring boot——结合redis

    一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...

  6. 玩转spring boot——AOP与表单验证

    AOP在大多数的情况下的应用场景是:日志和验证.至于AOP的理论知识我就不做赘述.而AOP的通知类型有好几种,今天的例子我只选一个有代表意义的“环绕通知”来演示. 一.AOP入门 修改“pom.xml ...

  7. 玩转spring boot——结合JPA入门

    参考官方例子:https://spring.io/guides/gs/accessing-data-jpa/ 接着上篇内容 一.小试牛刀 创建maven项目后,修改pom.xml文件 <proj ...

  8. 玩转spring boot——结合JPA事务

    接着上篇 一.准备工作 修改pom.xml文件 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=&q ...

  9. 玩转spring boot——结合AngularJs和JDBC

    参考官方例子:http://spring.io/guides/gs/relational-data-access/ 一.项目准备 在建立mysql数据库后新建表“t_order” ; -- ----- ...

随机推荐

  1. NASA航天技术演示实验集

    为了支持太空探索NASA开起了一系列先进太空技术演示实验. 具体的实验实验地址在:https://www.nasa.gov/mission_pages/tdm/main/overview.html 通 ...

  2. Exchange 2003 群集迁移 & SPS 2003 迁移、SQL Server 2000群集

    哈哈,本人自己写的文档,内容太多了,有195页,上传到Blog里面,应该是很难看的,排版也不太好. 记得下载时后改名字,用WinRAR解压合并. 第1章 迁移环境介绍 第2章 共享磁盘柜配置 第3章 ...

  3. spring boot项目mybatis配置注解+配置文件

    maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-ja ...

  4. vuejs+thinkphp5+phpsocketIO+timer数据及时更新

    1.安装thinkphp5.0以上版本包含workerman框架2.composer安装composer require workerman/phpsocket.io3.vue中调用需要加载weapp ...

  5. hdu 3790 最短路径dijkstra(多重权值)

    最短路径问题 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  6. css渐变实现

    body{ width: 100%; height: 100%; overflow: hidden; } *{ margin: 0px; padding: 0px; font-size: 0px; } ...

  7. wireshark封包详细信息详解(10.15 第二十一天)

    wireshark:网络流量抓取分析神器,需要学习一些常用的数据包过滤规则 IP过滤 ip.addr==192.168.1.1 只要包中的IP有192.168.1.1的,就会提取过来 IP源地址:ip ...

  8. JS正则和点击劫持代码(第十二天 9.27)

    JS正则 正则表达式:用单个字符串描述或者匹配符合特定语句规则的字符串一些字符序列组合在一起,可以简单也可以复杂模式的,可以去搜索,可以去替换 语法:/表达式/修饰符(可选)var para=/icq ...

  9. cf 621E. Wet Shark and Blocks

    神奇,矩阵乘法23333333333333333 递推式是很简单的(连我这种不会DP的人都写出来了.) 需要求出的是转移矩阵(还是叫系数矩阵的),也是最这个东西用快速幂. 这个东西的i,j大概就表示从 ...

  10. 五、CI框架之通过带路径的view视图路径访问

    一.如果需要现在的某个目录的View界面,需要在controller中写入文件路径 二.访问http://127.0.0.1/CodeIgniter-3.1.10/index.php/显示如下: 不忘 ...