http://acm.hdu.edu.cn/showproblem.php?pid=2602
#include<iostream>
using namespace std;
int c,f[1005],n,w[1005],v[1005];
int Max(int a,int b)
{
if(a>b)return a;
else return b;
}
int dp()
{
fill(f,f+c+1,0);
int i,j;
for(i=1;i<=n;i++)
{
for(j=c;j>=w[i];j--)
{
f[j]=Max(f[j],f[j-w[i]]+v[i]);
}
}
return f[c];
}
int main()
{
int T,i;
cin>>T;
while(T--)
{
cin>>n>>c;
for(i=1;i<=n;i++)cin>>v[i];
for(i=1;i<=n;i++)cin>>w[i];
cout<<dp()<<endl;
}
return 0;
}