简单贪心,距离远的先繁殖。
排序一下,更新答案即可。
#define M 200005
int T,n;
struct node
{
int d,t;
}d[M];
bool cmp(node a,node b)
{
if (a.t!=b.t) return a.t>b.t;
return a.d>b.d;
}
int main()
{
int i,j;
scanf("%d",&T);
for (int ca=1;ca<=T;ca++)
{
scanf("%d",&n);
for (i=0;i<n;i++)
{
scanf("%d%d",&d[i].d,&d[i].t);
}
sort(d,d+n,cmp);
int ans=0,tmp=0,time=0;
for (i=0;i<n;i++)
{
time+=d[i].d;
ans=max(time+d[i].t,ans);
}
printf("Case %d: %d\n",ca,ans);
}
return 0;
}