标准01背包
#include<bits/stdc++.h>
using namespace std;
int a[1020],b[1020],dp[1020];
int main()
{
int T,N,V;
scanf("%d",&T);
for(int i=1;i<=T;i++)
{
memset(dp,0,sizeof(dp));
scanf("%d%d",&N,&V);
for(int j=1;j<=N;j++)
scanf("%d",&a[j]);
for(int j=1;j<=N;j++)
scanf("%d",&b[j]);
for(int j=1;j<=N;j++)
for(int k=V;k>=b[j];k--)
{
if(dp[k-b[j]]+a[j]>dp[k])
dp[k]=dp[k-b[j]]+a[j];
}
printf("%d\n",dp[V]);
}
return 0;
}