解题思路:
简单的0-1背包问题,直接上代码;
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define maxn 1010
int main()
{
int t;
int n,v;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&v);
int w[maxn],vol[maxn];
for(int i=0;i<n;i++)
scanf("%d",&w[i]);
for(int i=0;i<n;i++)
scanf("%d",&vol[i]);
long long dp[maxn];
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
{
for(int j=v;j>=vol[i];j--)
{
dp[j]=max(dp[j],dp[j-vol[i]]+w[i]);
}
}
printf("%lld\n",dp[v]);
}
}