知识点:01背包
01背包是基础,一定要把01背包真正搞懂,那其它的背包就容易懂了。
#include <cstdio>
#include <memory.h>
int dp[1001],V;
inline int max(int a,int b)
{
return a>b ? a : b;
}
void ZeroOnePack(int val,int vol)
{
for(int v=V;v>=vol;v--)
dp[v]=max(dp[v],dp[v-vol]+val);
}
int main()
{
int t,n,val[1000],vol[1000];
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&V);
for(int i=0;i<n;i++)
scanf("%d",&val[i]);
for(int i=0;i<n;i++)
scanf("%d",&vol[i]);
memset(dp,0,sizeof(dp));
for(int i=0;i<n;i++)
ZeroOnePack(val[i],vol[i]);
printf("%d\n",dp[V]);
}
return 0;
}