这个题要求求布置并完成所有的工作时间最小,比较容易想到一个贪心策略就是说尽量的让工作的时间长的先布置并执行,因为这样的话尽可能的进行连续性工作。
还是比较简单。
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
struct node
{
int w;
int t;
bool operator<(const node& x)const
{
return t>x.t;
}
}a[1001];
int main()
{
int n,cas=1;
while(scanf("%d",&n)&&n)
{
for(int i=0;i<n;i++)
scanf("%d%d",&a[i].w,&a[i].t);
sort(a,a+n);
int ans=0,ita=0;
for(int i=0;i<n;i++)
{
ita+=a[i].w;
ans=max(ans,ita+a[i].t);
}
printf("Case %d: %d\n",cas++,ans);
}
return 0;
}