【动态规划/多重背包问题】POJ2392-Space Elevator
2015-06-28 19:07
295 查看
方法同POJ1014-Dividing,唯一不同点在于每一种block有最大限定高度a,故要以a为关键字进行排序,使得最大高度小的在前,否则最大高度小的再后可能放不上去。
#include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring> using namespace std; struct block { int h,a,c; bool operator < (const block& x) const { return a<x.a; } }; const int MAXN=40000+10; int dp[MAXN]; block m[405]; int k,max=-1; int main() { scanf("%d",&k); memset(dp,-1,sizeof(dp)); dp[0]=0; int max=-1; for (int i=0;i<k;i++) scanf("%d%d%d",&m[i].h,&m[i].a,&m[i].c); sort(m,m+k); for (int i=0;i<k;i++) { int a=m[i].a; int h=m[i].h; int c=m[i].c; if (a>max) max=a; for (int j=0;j<=a;j++) { if (dp[j]>=0) dp[j]=c; else { if (j<h || dp[j-h]<=0) dp[j]=-1; else dp[j]=dp[j-h]-1; } } } for (int i=max;i>=0;i--) if (dp[i]!=-1) { cout<<i<<endl; break; } return 0; }
相关文章推荐
- 监控系统nagios+nconf+pnp4
- servlet详解
- Android中Bitmap和Drawable
- unity资源管理
- 吐槽各种新技术 了解优缺点
- ubuntu12.04 minicom安装与使用
- CentOS 7.0 yum安装Apache、PHP和MySQL
- Effective C++ Item 46 当需要投你非成员函数定义模板
- 测试用例标准(转)
- C语言字符串拷贝
- VS10的一个问题
- [PHP 作为iOS后台Json格式HTTP通信及文件上传的实现]
- 专注吐槽 20 年,酱油已打 200 斤, 挖坑已挖 2000 米深,就等着自己跳进去了……
- [Swust OJ 581]--彩色的石子(状压dp)
- Java中Iterator与Iterable的区别
- switch语句
- 学习笔记_Java_day12_设计模式MVC(13).JavaWeb的三层框架(14)
- ubuntu12.04安装arm-linux-gcc详解
- OpenStack 主要项目一览
- Solution 2: Min Stack