简单dp
#include<stdio.h>
#include<string.h>
int dp[21][1010];
int main()
{
int i,j,n,k,vp,v[21],w[21],t,p;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&k);
for(i=0;i<n;i++)
scanf("%d%d",&w[i],&v[i]);
scanf("%d",&vp);
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
for(j=k;j>0;j--)//不能递增,w了一次
for(p=v[i];p<=vp;p++)
{
if(dp[j][p]<dp[j-1][p-v[i]]+w[i])
dp[j][p]=dp[j-1][p-v[i]]+w[i];
}
printf("%d\n",dp[k][vp]);
}
return 0;
}