标签:
Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 28020 Accepted Submission(s): 9864
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 #include <vector> 6 #include <queue> 7 #include <cmath> 8 #include <set> 9 using namespace std; 10 11 #define N 55*50*100/2 12 13 int max(int x,int y){return x>y?x:y;} 14 int min(int x,int y){return x<y?x:y;} 15 int abs(int x,int y){return x<0?-x:x;} 16 17 int n; 18 int v[55], num[55]; 19 int dp[N]; 20 21 main() 22 { 23 int i, j, k; 24 while(scanf("%d",&n)==1&&n>=0){ 25 int sum=0; 26 for(i=1;i<=n;i++){ 27 scanf("%d %d",&v[i],&num[i]); 28 sum+=v[i]*num[i]; 29 } 30 memset(dp,0,sizeof(dp)); 31 for(i=1;i<=n;i++){ 32 for(k=0;k<=num[i];k++){ 33 for(j=sum/2;j>=k*v[i];j--){ 34 dp[j]=max(dp[j],dp[j-v[i]*k]+v[i]*k); 35 } 36 } 37 } 38 printf("%d %d\n",sum-dp[sum/2],dp[sum/2]); 39 } 40 }
标签:
原文地址:http://www.cnblogs.com/qq1012662902/p/4648237.html