标准的0/1背包,直接付代码:
/*HDOJ2544
作者:陈佳润
2013-04-09
*/
#include<stdio.h>
#include<string.h>
#define max(a,b) (a>b?a:b)
long int v[1005],w[1005],V,N;
long int dp[1005];
void ZeroOnePack(long int v,long int w){
long int i;
for(i=V;i>=w;i--)
dp[i]=max(dp[i],dp[i-w]+v);
}
int main(){
long int time,i;
//freopen("1.txt","r",stdin);
scanf("%ld",&time);
while(time--){
scanf("%ld%ld",&N,&V);
for(i=1;i<=N;i++)
scanf("%ld",&v[i]);
for(i=1;i<=N;i++)
scanf("%ld",&w[i]);
memset(dp,0,sizeof(dp));
for(i=1;i<=N;i++)
ZeroOnePack(v[i],w[i]);
printf("%ld\n",dp[V]);
}
return 0;
}