标签:
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 40598 Accepted Submission(s):
16872
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<stack> 5 #include<set> 6 #include<map> 7 #include<queue> 8 #include<algorithm> 9 using namespace std; 10 #define max(a,b) (a>b?a:b) 11 int va[1005],vo[1005],dp[1005][1005]; 12 int main() 13 { 14 //freopen("D:\\INPUT.txt","r",stdin); 15 int t,i,j; 16 int n,v; 17 scanf("%d",&t); 18 while(t--) 19 { 20 scanf("%d %d",&n,&v); 21 for(i=1; i<=n; i++) 22 { 23 scanf("%d",&va[i]); 24 } 25 for(i=1; i<=n; i++) 26 { 27 scanf("%d",&vo[i]); 28 } 29 //dp[i][j] 前i件物品放入j体积的价值的最大值 30 //dp[i][j]=max(dp[i-1][j],dp[i-1][j-vo[i]]+va[i]) 31 for(i=1; i<=n; i++) //i体积 32 { 33 for(j=0; j<=v; j++) 34 { 35 if(j>=vo[i]){ 36 dp[i][j]=max(dp[i-1][j],dp[i-1][j-vo[i]]+va[i]); 37 } 38 else{ 39 dp[i][j]=dp[i-1][j]; 40 } 41 42 //cout<<i<<" "<<j<<" "<<dp[i][j]<<endl; 43 } 44 } 45 printf("%d\n",dp[n][v]); 46 } 47 return 0; 48 }
标签:
原文地址:http://www.cnblogs.com/Deribs4/p/4796120.html