题意:有N个部下,第i个部下你要花Bi分钟交代任务,然后他立即独立不间断的执行Ji分钟,你需要交代任务的顺序,使得所有的任务尽早的完成,注意,不能同时给两个部下交代任务,但部下可以同时执行他们各自的任务,求所有任务完成的最短时间,
思路:贪心:按照J从大到小的顺序给各个任务排序,然后依次交代
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;
const int MAXN = 1005;
struct job{
int j,b;
bool operator< (const job &x)const {
return j > x.j;
}
};
int main(){
int t,cas=1,n,b,j;
while (scanf("%d",&n) != EOF && n){
vector<job> v;
for (int i = 0; i < n; i++){
scanf("%d%d",&b,&j);
v.push_back((job){j,b});
}
sort(v.begin(),v.end());
int s = 0;
int ans = 0;
for (int i = 0; i < n; i++){
s += v[i].b;
ans = max(ans,s+v[i].j);
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}