UVa 11729 - Commando War(贪心)
“Waiting for orders we held in the wood, word from the front never came
By evening the sound of the gunfire was miles away
Ah softly we moved through the shadows, slip away through the trees
Crossing their lines in the mists in the fields on our hands and our knees
And all that I ever, was able to see
The fire in the air, glowing red, silhouetting the smoke on the breeze”
There is a war and it doesn’t look very promising for your country. Now it’s time to act. You
have a commando squad at your disposal and planning an ambush on an important enemy camp
located nearby. You have N soldiers in your squad. In your master-plan, every single soldier has a
unique responsibility and you don’t want any of your soldier to know the plan for other soldiers so that
everyone can focus on his task only. In order to enforce this, you brief every individual soldier about
his tasks separately and just before sending him to the battlefield. You know that every single soldier
needs a certain amount of time to execute his job. You also know very clearly how much time you
need to brief every single soldier. Being anxious to finish the total operation as soon as possible, you
need to find an order of briefing your soldiers that will minimize the time necessary for all the soldiers
to complete their tasks. You may assume that, no soldier has a plan that depends on the tasks of his
fellows. In other words, once a soldier begins a task, he can finish it without the necessity of pausing
in between.
Input
There will be multiple test cases in the input file. Every test case starts with an integer N (1 ≤
N ≤ 1000), denoting the number of soldiers. Each of the following N lines describe a soldier with two
integers B (1 ≤ B ≤ 10000) & J (1 ≤ J ≤ 10000). B seconds are needed to brief the soldier while
completing his job needs J seconds. The end of input will be denoted by a case with N = 0. This case
should not be processed.
Output
For each test case, print a line in the format, ‘Case X: Y ’, where X is the case number & Y is the
total number of seconds counted from the start of your first briefing till the completion of all jobs.
Sample Input
3
2 5
3 2
2 1
3
3 3
4 4
5 5
0
Sample Output
Case 1: 8
Case 2: 15
题意:
你有n个部下,每个部下需要完成一项任务。第i个部下需要你花B(i)分钟交代任务,
然后他就会立刻独立的、无间断的执行J(i)分钟后完成任务。
你需要选择交代任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务应尽早结束)。
注意:不能同时给2个或以上的部下交代任务,但部下们可以同时执行他们各自的任务。
输入第一行为n,n为部下的个数。
接下来的n行为B和J。
当n为0时,输入结束。
分析:
执行时间较长的任务需要先交代,
于是,我们可以想到这样一个贪心算法:
按照J从小到大的顺序给各个任务排序,然后依次交代。
package cn.hncu.UVa;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
/**
*
* @author 陈浩翔
*
* 2016-4-25
*/
public class P11729 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int k=0;
while(sc.hasNext()){
k++;
int n =sc.nextInt();
if(n==0){
break;
}
Bj bj[] = new Bj[n];
for(int i=0;i<n;i++){
bj[i]=new Bj();
bj[i].b = sc.nextInt();
bj[i].j = sc.nextInt();
}
sort(bj);
int s=0;
int ans =0;
for(int i=0;i<n;i++){
s = s+bj[i].b;//当前任务的开始执行时间,也就是吩咐完后的时间
ans = Math.max(ans, s+bj[i].j);//更新用户任务执行完毕时的最晚时间
}
System.out.println("Case "+k+": "+ans);
}
}
private static void sort(Bj[] bj) {
Arrays.sort(bj, new Comparator<Bj>() {
@Override
public int compare(Bj o1, Bj o2) {
if(o1.j<o2.j){
return 1;
}
return -1;
}
});
}
}
class Bj{
public int b;
public int j;
}
UVa 11729 - Commando War(贪心)的更多相关文章
- Uva 11729 Commando War (简单贪心)
Uva 11729 Commando War (简单贪心) There is a war and it doesn't look very promising for your country. N ...
- 贪心 UVA 11729 Commando War
题目传送门 /* 贪心:按照执行时间长的优先来排序 */ #include <cstdio> #include <algorithm> #include <iostrea ...
- UVA 11729 - Commando War(贪心 相邻交换法)
Commando War There is a war and it doesn't look very promising for your country. Now it's time to ac ...
- [ACM_水题] UVA 11729 Commando War [不可同时交代任务 可同时执行 最短完成全部时间 贪心]
There is a war and it doesn't look very promising for your country. Now it's time to act. You have a ...
- UVa 11729 Commando War 【贪心】
题意:有n个部下,交待每个部下完成他相应的任务需要bi的时间,然后完成这项任务需要ji的时间, 选择交待任务的顺序,使得总的花费的时间最少 因为不管怎么样,交待所需要的n*bi的时间都是要花费的, 然 ...
- UVa 11729 - Commando War
[题目翻译]: 题目分析:因为任务是可以并行的执行,所以直觉上是花费时间长的任务优先去部署.但是这到题目还给你交待任务的时间,所以容易让人想多了. 不管有没有交待任务的时间,对于任务x和y,只可能有两 ...
- UVa 11729 Commando War 突击战
你有 n 个部下,每个部下需要完成一个任务.第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地.无间断地执行 Ji 分钟后完成任务.你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最 ...
- cogs 1446. [Commando War,Uva 11729]突击战
1446. [Commando War,Uva 11729]突击战 ★ 输入文件:commando.in 输出文件:commando.out 简单对比时间限制:1 s 内存限制:64 ...
- Commando War
Commando War“Waiting for orders we held in the wood, word from the front never cameBy evening the so ...
随机推荐
- [转] tomcat结合nginx使用小结
相信很多人都听过nginx,这个小巧的东西慢慢地在吞食apache和IIS的份额.那究竟它有什么作用呢?可能很多人未必了解. 说到反向代理,可能很多人都听说,但具体什么是反向代理,很多人估计就不清楚了 ...
- chmod -x chmod的N种解法
声明:该文章摘自陈皓的酷壳. 问题: 如果某天你的Unix/Linux系统上的chomd命令被某人去掉了x属性(执行属性),那么,你如何恢复呢? 参考答案: 1)重新安装.对于Debian的系统: s ...
- 动态用javascript来修改单选框性别
<script> window.onload=function(){ if(<{$data.sex}>==0){//<{$data.sex}>是在数据读出来: do ...
- NYOJ 47过河问题
主要思路:先排序.有两种可能是最小的情况,一种是让最小的去带着最大的过去,然后最小的再回来,还有一种就是先最小的和第二小的一块过去, 然后最小的回来,让最大的和第二大的过去,接着第二小的回来,第二小和 ...
- Python简易爬虫
经常需要下载论文,每次都需要去网页上搜索,然后点击下载,实在麻烦,正好最近刚入门Python,心血来潮,想着写一个爬虫 经过一天查阅资料,基本算是完成了,但是还是不足,比如对知网和万方暂时还不行,但是 ...
- Spring框架
Spring框架的根本使命是:简化JAVA开发,为了简化开发,有以下四个策略 基于POJO的轻量级和最小侵入性编程: 通过依赖注入和面向接口实现松耦合: 基于切面和惯性进行声明式编程: 通过切面和模板 ...
- 鼠标滑动判断与y轴的距离
$(window).scroll(function(){ var y = window.scrollY;//754到达 ...
- Dhroid框架配置
1.将dhroid文件夹作为一个Module导入,dhroid下载地址 2.在build.gradle中的dependencies节点中添加compile project(':dhroid') dep ...
- Android定时器功能实现方法
在Android开发中,定时器一般有以下3种实现方法: 1.采用Handler与线程的sleep(long)方法 2.采用Handler的postDelayed(Runnable, long)方法 3 ...
- Linq101-CustomSequence
using System; using System.Collections.Generic; using System.Linq; namespace Linq101 { class CustomS ...