您的位置:首页 > 其它

UVA 11729 - Commando War

2013-05-18 11:16 357 查看
题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2829

这也是一道贪心的题目。

将Ji从大到小排序,然后找出最大的还需要多少时间。

代码如下:(有详细注释)

#include <iostream>
#include <queue>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <cmath>
using namespace std;

int i,j;
const int N=10010;
typedef long long LL;

struct xh
{
int j,w;
friend bool operator < (const xh a,const xh b)
{
return a.w>b.w;
}
}a
;

int n;

int main()
{
int tt=0;
while(scanf("%d",&n)&&n)
{
int sum=0,maxx=0;
for(i=1;i<=n;i++)
{
scanf("%d%d",&a[i].j,&a[i].w);
sum+=a[i].j;
}
sort(a+1,a+1+n);
int cur=0;
for(i=n;i>1;i--)//倒过来求还要多少额外的时间
{
cur+=a[i].j;
int t=a[i-1].w-cur;//求后面的时间是不是够完成
if(t>maxx)//找最大的不够时间
maxx=t;
}
maxx=max(maxx,a
.w);//比较前面不够的时间和最后一个任务完成的时间
printf("Case %d: %d\n",++tt,sum+maxx);//交代任务时间+不够的时间
}
return 0;
}

/*
3
2 5
3 2
2 1
3
3 3
4 4
5 5
0
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: