UVa - 11729 Commando War(贪心)

UVa - 11729 Commando War(贪心)
题目链接:
https://vjudge.net/problem/UVA-11729
题解:

执行时间长的任务应该先交代,所以按照J从大到小的顺序给各个任务排序,然后依次交代。

AC代码

#include <iostream>
#include <cstdio>
#include <fstream>
#include <algorithm>
#include <cmath>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
using namespace std;

struct node
{
    int b,j;
};
node a[10010];
bool cmp(node x,node y)//按照J从大到小排序
{
    return x.j>y.j;
}

int main()
{
    int n;
    int icase=0;//第几次
    while(cin >> n )
    {
        if(n==0)
            break;
        icase++;
        for(int i=0; i<n; i++)
            cin >> a[i].b >> a[i].j;
        sort(a,a+n,cmp);//排序
        int ans=0;
        int temp=0;
        for(int i=0; i<n; i++)
        {
            temp+=a[i].b;//加上这个任务交代的时间
            ans=max(ans,temp+a[i].j);//和加上这个任务完成的时间作比较
        }
        printf("Case %d: %d\n",icase,ans);
    }
    return 0;
}