码迷,mamicode.com
首页 > 其他好文 > 详细

均分背包 HDU1171

时间:2015-07-22 22:10:54      阅读:99      评论:0      收藏:0      [点我收藏+]

标签:

技术分享
 1 #include <cstring>
 2 #include <iostream>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 long long dp[250010];
 8 int v[5500][2];
 9 
10 int main()
11 {
12     int n;
13     while(cin>>n&&n>0)
14     {
15         long long int sum=0;
16         long long int req;
17         memset(v,0,sizeof(v));
18         for(int i=0;i<n;i++)
19         {
20             cin>>v[i][0]>>v[i][1];
21             sum+=v[i][0]*v[i][1];
22         }
23         req=sum/2;
24         memset(dp,0,sizeof(dp));
25         for(int i=0;i<n;i++)
26         {
27             for(int t=0;t<v[i][1];t++)
28             for(int vv=req;vv>=v[i][0];vv--)
29             {
30                 dp[vv]=max(dp[vv-v[i][0]]+v[i][0],dp[vv]);
31             }
32         }
33         cout<<sum-dp[req]<<" "<<dp[req]<<endl;
34     }
35     return 0;
36 }
View Code

 

均分背包 HDU1171

标签:

原文地址:http://www.cnblogs.com/wsruning/p/4668616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!