0
点赞
收藏
分享

微信扫一扫

UVA - 11729 Commando War (贪心)


题目大意:有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;  
    }



举报

相关推荐

0 条评论