标签:
给n个人分配任务 分配任务的时间b和执行任务的时间j 每一次只能给一个人分配任务 求最小的时间
贪心求解 将任务 按照执行时间从长到短排序 依次分配任务 并执行 求出时间即所得最短时间 证明自证
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1010;
struct Job{
int b, j;
bool operator < (const Job& x) const{
return j > x.j;
}
}job[maxn];
int main(){
int n;
int cas = 0;
while(scanf("%d", &n)!=EOF && n){
for(int i = 0; i < n; ++i){
scanf("%d%d", &job[i].b, &job[i].j);
}
sort(job, job+n);
int cnt = 0;
int ans = 0;
for(int i = 0; i < n; ++i){
cnt += job[i].b;
ans = max(ans, cnt + job[i].j);
}
printf("Case %d: %d\n", ++cas, ans);
}
return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/u012431590/article/details/47299561