描述:最长子序列,不过需要注意的是小乌龟的重量会依次加在下层的小乌龟身上,所以越往下,小乌龟所承受的重量越大
#include <cstdio>
#include <cstdlib>
#include <cstring>
int v[5610][2],arr[5610];
int cmp(const void *p1,const void *p2)
{
int c = ((int *)p1)[1] - ((int *)p2)[1];
if(c!=0) return c;
return ((int *)p1)[0] - ((int *)p2)[0];
}
int max(int x,int y)
{
return x>y?x:y;
}
int main()
{
// freopen("a.txt","r",stdin);
int len=0,sum=0;
while(scanf("%d%d",&v[len][0],&v[len][1])!=EOF) len++;
qsort(v,len,sizeof(v[0]),cmp);
memset(arr,0x7f,sizeof(arr));
arr[0]=0;
for(int i=0; i<len; i++)
for(int j=sum; j>=0; j--)
if(v[i][1]>=arr[j]+v[i][0]&&arr[j+1]>arr[j]+v[i][0])
{
arr[j+1]=arr[j]+v[i][0];
sum=max(sum,j+1);
}
printf("%d\n",sum);
return 0;
}
10154 - Weights and Measures
最新推荐文章于 2018-12-06 09:16:14 发布