hdu 2602 Bone Collector

//01背包,直接模板题 

#include<stdio.h> #include<string.h> int dp[1005]; int v[1005],c[1005]; int max(int a,int b) { return a>b?a:b; } int main(void) { int t,n,m; scanf("%d",&t); while(t--) { memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d",&v[i]); for(int i=1;i<=n;i++) scanf("%d",&c[i]); for(int i=1;i<=n;i++) for(int j=m;j>=c[i];j--) dp[j]=max(dp[j],dp[j-c[i]]+v[i]); //状态转移 printf("%d\n",dp[m]); } return 0; }

 

posted @ 2013-09-12 12:00  heaventouch  阅读(69)  评论(0编辑  收藏  举报