你有n个部下 每个部下完成一项任务
第i个部下需要你花Bi分钟交代任务,然后他会独立的无间断的执行Ji分钟后完成任务。你需要选择交代任务的顺序,使得所有任务尽早执行完毕。
注意,不能同时给两个部下交代任务,但部下们可以同时执行各自的任务。
样例输入:
3
2 5
3 2
2 1
样例输出:
8
样例输入:
3
3 3
4 4
5 5
样例输出:
15
分析,简单的动态规划。
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
class Cmp implements Comparator<Soldier>{
@Override
public int compare(Soldier s1, Soldier s2) {
return s2.t2-s1.t2;
}
}
class Soldier {
int t1;
int t2;
}
public class 突击战 {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int n=input.nextInt();
Soldier arr[]=new Soldier[n];
for (int i = 0; i < arr.length; i++) {
Soldier temp=new Soldier();
arr[i]=temp;
arr[i].t1=input.nextInt();
arr[i].t2=input.nextInt();
}
Cmp cmp=new Cmp();
Arrays.sort(arr, cmp);//对对象的排序
int s=0;
int ans=0;
for (int i = 0; i < arr.length; i++) {
s+=arr[i].t1;//当前任务开始执行时间
ans=Math.max(ans, s+arr[i].t2);//更新任务执行完毕的时间
}
System.out.println(ans);
// for (Soldier soldier : arr) {
// System.out.println(soldier.t1+" "+soldier.t2);
// }
}
}