先上题目:
Time Limit: 2000/1000 MS
(Java/Others) Memory Limit: 32768/32768 K
(Java/Others)
Total Submission(s): 23533 Accepted
Submission(s): 9535
1 #include <cstdio> 2 #include <cstring> 3 #define max(x,y) (x > y ? x : y) 4 #define MAX 1001 5 using namespace std; 6 7 int dp[MAX],n,s; 8 int v[MAX],c[MAX]; 9 10 int main() 11 { 12 int t; 13 //freopen("data.txt","r",stdin); 14 scanf("%d",&t); 15 while(t--){ 16 scanf("%d %d",&n,&s); 17 for(int i=1;i<=n;i++){ 18 scanf("%d",&v[i]); 19 } 20 for(int i=1;i<=n;i++){ 21 scanf("%d",&c[i]); 22 } 23 memset(dp,0,sizeof(dp)); 24 for(int i=1;i<=n;i++){ 25 for(int j=s;j>=0;j--){ 26 if(c[i]<=j) dp[j]=max(dp[j],(dp[j-c[i]]+v[i])); 27 //printf("%d ",dp[j]); 28 } 29 //printf("\n"); 30 } 31 printf("%d\n",dp[s]); 32 } 33 return 0; 34 }
原文:http://www.cnblogs.com/sineatos/p/3524515.html