poj 2392 Space Elevator (多重背包)
来源:互联网 发布:奇兔刷机软件有毒 编辑:程序博客网 时间:2024/05/19 20:49
题意:一群牛要上太空,给出n种石块,每种石块给出单块高度,总高度不能超过的最大值,数量,要求
用这些石块能组成的最大高度
思路:在进行多重背包之前要进行一次排序,将最大高度小的放在前面,只有这样才能得到最优解,如果
将大的放在前面,后面有的小的就不能取到,排序之后就可以进行多重背包了
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;struct node{ int h,a,c;}k[410];int used[400000];int dp[400000];bool cmp(node x,node y){ return x.a<y.a;}int main(){ int n,ans; while(scanf("%d",&n)!=EOF) { for(int i=0;i<n;i++) scanf("%d%d%d",&k[i].h,&k[i].a,&k[i].c); sort(k,k+n,cmp); memset(dp,0,sizeof(dp)); dp[0]=1; ans=0; for(int i=0;i<n;i++) { memset(used,0,sizeof(used)); for(int j=k[i].h;j<=k[i].a;j++) { if(!dp[j] && dp[j-k[i].h] && used[j-k[i].h]<k[i].c) { dp[j]=1; used[j]=used[j-k[i].h]+1; //计算所用石头个数 if(j>ans) ans=j; } } } printf("%d\n",ans); } return 0;}
0 0
- poj 2392 Space Elevator 多重背包
- poj 2392 Space Elevator(多重背包变形)
- POJ 2392 Space Elevator [DP 多重背包]
- 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 多重背包
- poj 2392 Space Elevator (多重背包)
- POJ 2392-Space Elevator(多重背包)
- POJ 2392 Space Elevator(贪心+多重背包)
- POJ 2392 Space Elevator 多重背包
- poj 2392 Space Elevator dp 多重背包
- poj Space Elevator 2392 (多重背包)
- 多重背包-POJ 2392 Space Elevator
- About delete
- MySql避免重复插入记录
- 将一个十进制数转换为二进制输出
- ListView 特殊属性
- 黑马程序员——值类型与引用类型
- poj 2392 Space Elevator (多重背包)
- Extjs4.2 获取行数据的两种方法。
- mysql更改表结构:添加、删除、修改字段、调整字段顺序
- JNI 中 JAVA 与 C 数据类型装换 (1)
- Extjs4自定义按钮样式
- Surrounded Regions 被包围的区域
- Python re(正则表达式)模块
- I2C上拉电阻
- Extjs4自定义按钮样式