hdu 2602 Bone Collector 01背包
//01背包入门题,理解01背包的思想后直接可过
//状态转移方程: dp[j]=Max(dp[j],dp[j-v[i]]+w[i]);
#include<stdio.h> #define N 1005 int dp[N*N]={0}; int Max(int a,int b) { return a>b?a:b; } int main(void) { int t,n,m; int v[N],w[N]; scanf("%d",&t); while(t--) { for(int i=0;i<N*N;i++) dp[i]=0; scanf("%d%d",&n,&m); for(int i=0;i<n;i++) scanf("%d",&w[i]); for(int i=0;i<n;i++) scanf("%d",&v[i]); for(int i=0;i<n;i++) for(int j=m;j>=v[i];j--) dp[j]=Max(dp[j],dp[j-v[i]]+w[i]); printf("%d\n",dp[m]); } return 0; }