题目大意:有n个特总兵,每个特总兵的任务都不一样,上级给特总兵布置任务需要n分钟,执行需要m分钟,问所有士兵都执行完任务所需的最短时间
解题思路:因为在一个士兵执行任务时可以给另一个士兵布置任务,这样的话,总的时间就会减少了,所以只需按任务执行时间大小进行排序,然后再依次计算即可
#include<algorithm>
#include<cstdio>
using namespace std;
#define maxn 1010
int B[maxn], J[maxn], F[maxn];
int cmp(const int a, const int b) {
return J[a] > J[b];
}
int main() {
int n, mark = 1;
while(scanf("%d",&n) == 1 && n) {
for(int i = 0; i < n; i++) {
F[i] = i;
scanf("%d%d", &B[i], &J[i]);
}
sort(F,F+n,cmp);
int temp = 0;
int ans = 0;
for(int i = 0; i < n; i++) {
ans += B[F[i]];
temp = max(temp - B[F[i]], J[F[i]]);
}
ans += temp;
printf("Case %d: %d\n",mark++, ans);
}
return 0;
}