UVA 11729 - Commando War

来源:互联网 发布:c语言中数据类型长度 编辑:程序博客网 时间:2024/05/21 17:02

贪心

首先按执行时间排序,然后维护一个变量maxJobTimeLeft,表示最大的任务剩余时间,累加所有的分配时间,再加上最后的最大任务剩余时间就是答案

#include <iostream>#include <memory.h>#include <algorithm>#include <cstdio>using namespace std;#define MAX 1010struct node{int b,j;bool operator<(const node & rhs)const{return j>rhs.j;}}soldiers[MAX];int n;int main(){int cas=1;while (scanf("%d",&n)&&n){int cost=0,maxJobTimeLeft=0;for(int i=0;i<n;++i)scanf("%d %d",&soldiers[i].b,&soldiers[i].j);sort(soldiers,soldiers+n);for (int i=0;i<n;++i){cost+=soldiers[i].b;maxJobTimeLeft-=soldiers[i].b;if(soldiers[i].j>maxJobTimeLeft)maxJobTimeLeft=soldiers[i].j;}printf("Case %d: %d\n",cas++,cost+maxJobTimeLeft);}}


原创粉丝点击