POJ 2392 Space Elevator
2017-03-31 17:20
309 查看
Space Elevator
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 11622 Accepted: 5518
Description
The cows are going to space! They plan to achieve orbit by building a sort of space elevator: a giant tower of blocks. They have K (1 <= K <= 400) different types of blocks with which to build the tower. Each block of type i has height h_i (1 <= h_i <= 100) and is available in quantity c_i (1 <= c_i <= 10). Due to possible damage caused by cosmic rays, no part of a block of type i can exceed a maximum altitude a_i (1 <= a_i <= 40000).
Help the cows build the tallest space elevator possible by stacking blocks on top of each other according to the rules.
Input
Line 1: A single integer, K
Lines 2..K+1: Each line contains three space-separated integers: h_i, a_i, and c_i. Line i+1 describes block type i.
Output
Line 1: A single integer H, the maximum height of a tower that can be built
Sample Input
3
7 40 3
5 23 8
2 52 6
Sample Output
48
Hint
OUTPUT DETAILS:
From the bottom: 3 blocks of type 2, below 3 of type 1, below 6 of type 3. Stacking 4 blocks of type 2 and 3 of type 1 is not legal, since the top of the last type 1 block would exceed height 40.
Source
USACO 2005 March Gold
题意:一群牛要上太空,给出n种石块,每种石块给出单块高度,总高度不能超过的最大值,数量,要求用这些石块能组成的最大高度
思路:在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包
思路:在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 11622 Accepted: 5518
Description
The cows are going to space! They plan to achieve orbit by building a sort of space elevator: a giant tower of blocks. They have K (1 <= K <= 400) different types of blocks with which to build the tower. Each block of type i has height h_i (1 <= h_i <= 100) and is available in quantity c_i (1 <= c_i <= 10). Due to possible damage caused by cosmic rays, no part of a block of type i can exceed a maximum altitude a_i (1 <= a_i <= 40000).
Help the cows build the tallest space elevator possible by stacking blocks on top of each other according to the rules.
Input
Line 1: A single integer, K
Lines 2..K+1: Each line contains three space-separated integers: h_i, a_i, and c_i. Line i+1 describes block type i.
Output
Line 1: A single integer H, the maximum height of a tower that can be built
Sample Input
3
7 40 3
5 23 8
2 52 6
Sample Output
48
Hint
OUTPUT DETAILS:
From the bottom: 3 blocks of type 2, below 3 of type 1, below 6 of type 3. Stacking 4 blocks of type 2 and 3 of type 1 is not legal, since the top of the last type 1 block would exceed height 40.
Source
USACO 2005 March Gold
题意:一群牛要上太空,给出n种石块,每种石块给出单块高度,总高度不能超过的最大值,数量,要求用这些石块能组成的最大高度
思路:在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包
思路:在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果将大的放在前面,后面有的小的就不能取到,排序之后就可以进行完全背包
#include <iostream> #include <algorithm> #include <cstring> #include <cstdio> using namespace std; const int maxn = 400000; struct node { int h_i; int a_i; int c_i; bool operator < (const node &n)const { return a_i < n.a_i; } }vis[405]; int dp[maxn de31 ]; int cnt[maxn]; int main() { int k; while(cin>>k) { for(int i=0;i<k;i++) { cin>>vis[i].h_i>>vis[i].a_i>>vis[i].c_i; } sort(vis,vis+k); memset(dp,0,sizeof(dp)); dp[0] = 1; int ans = 0; for(int i=0;i<k;i++) { memset(cnt,0,sizeof(cnt)); for(int j=vis[i].h_i;j<=vis[i].a_i;j++) { // 维持单调队列的递减特性 if(!dp[j]&&dp[j-vis[i].h_i]&&cnt[j-vis[i].h_i]<vis[i].c_i) { dp[j]=1; cnt[j]=cnt[j-vis[i].h_i]+1; if(ans<j) ans=j; } } } cout<<ans<<endl; } return 0; }
相关文章推荐
- POJ 2392 Space Elevator
- POJ_2392 Space Elevator(多重背包)
- POJ - 2392 Space Elevator(多重背包)
- poj 2392 Space Elevator (多重背包)
- POJ 2392 Space Elevator 和 HDU3466 Proud Merchants
- poj——2392——Space Elevator(多重)
- POJ 2392 Space Elevator(多重背包)
- poj 2392--Space Elevator
- POJ 2392 Space Elevator
- poj 2392 Space Elevator(多重背包+先排序)
- POJ 2392 Space Elevator(带限制条件的多重背包)
- POJ2392:Space Elevator
- POJ 2392 Space Elevator(贪心+多重背包)
- poj 2392 Space Elevator(排序+多重背包)
- poj 2392 Space Elevator
- poj 2392 Space Elevator(多重背包)
- poj 2392 Space Elevator (多重背包)
- poj 2392 Space Elevator
- POJ 题目2392 Space Elevator(多重背包)
- poj 2392 Space Elevator