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

POJ 2392 Space Elevator

时间:2015-08-29 11:09:39      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

POJ 2392 Space Elevator

奶牛们想用c_i个高h_i的积木造通天塔,每种积木不能高过a_i,求塔的最大高度

必须按积木的a_i从小到大的顺序递推才能覆盖全部解空间。多重背包问题

 1 include<iostream>
 2 #include<algorithm>
 3 using namespace std;
 4 struct node
 5 {
 6     int h,maxn,n;
 7 };
 8 node a[516];
 9 int dp[516][40016];
10 bool is_greater(const node& a,const node& b)
11 {
12     return a.maxn<b.maxn;
13 }
14 int main()
15 {
16     int T;
17     int i,j,k;
18     cin>>T;
19     for(i=0;i<T;i++)
20     {
21         cin>>a[i].h>>a[i].maxn>>a[i].n;
22     }
23     sort(a,a+T,is_greater);
24     //多重背包 
25     for(i=0;i<T;i++)
26     {
27         for(j=0;j<=a[i].maxn;j++)
28         {
29             for(k=0;k*a[i].h<=j && k<=a[i].n ;k++)
30             {
31                 dp[i+1][j]=max(dp[i+1][j],dp[i][j-k*a[i].h]+k*a[i].h);
32             }
33         }
34     }
35     int result=-1;
36     for(i=1;i<=a[T-1].maxn;i++)
37     {
38         result=max(result,dp[T][i]);
39     }
40     cout<<result<<endl;
41     return 0;
42 }
43         

 

POJ 2392 Space Elevator

标签:

原文地址:http://www.cnblogs.com/xlsryj/p/4768541.html

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