poj 2392 Space Elevator
2015-07-26 23:27
357 查看
多重背包的处理,处理之前,需要根据题目的要求将各个block的容量从小到大进行排序,之后进行多重背包处理。
#include<iostream> #include<string.h> #include<math.h> #include<fstream> #include<algorithm> #include<stdio.h> #include<queue> #include<vector> #define MAXSIZE 100 using namespace std; const int INF = 1<<30; #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) int K = 0; struct node{ int h, a, c; }; bool comp (const node a, const node b) { return a.a < b.a; } node blocks[410]; int dp[40100]; int ans = 0, rec = 0, maxn = 0; int main() { //freopen("data_2392.txt","r",stdin); while(scanf("%d", &K) != EOF) { memset(dp, 0, sizeof(dp)); for (int i = 0; i < K; i++) { scanf("%d%d%d", &blocks[i].h, &blocks[i].a, &blocks[i].c); } sort (blocks, blocks + K, comp); dp[0] = 1; for (int i = 0; i < K; i++) { int t = 0; rec = maxn; for (int j = maxn; j >= t; j--) { if (dp[j]) { for (int k = 1; k <= blocks[i].c; k++) { int a = k * blocks[i].h + j; if (a > blocks[i].a) { break; } if (rec < a) { rec = a; } dp[a] = 1; } } } maxn = rec; } printf("%d\n", maxn); } return 0; }
相关文章推荐
- struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题
- hdu4101
- Java中IO小结
- POJ 2479 Maximum sum(双向DP)
- linux 进程等待 wait 、 waitpid
- Android SDK Manager国内下载缓慢或不能下载的问题
- 糟糕的一天
- hd2674 N!Again
- 几种排序算法综合比较(快速,归并,希尔,堆排序等)
- UI-框架---快切
- VisualSVN Server安装过程
- Ununtu 12.04 x64位安装docker
- VisualSVN Server安装过程
- 正确处理浏览器在下载文件时HTTP头的编码问题(Content-Disposition)
- SQL Server因为数据库正在使用,所以无法获得对数据库的独占访问权
- WorldWind源码剖析系列:星球表面渲染类WorldSurfaceRenderer
- [MAC][Linux]awk使用
- centos7 网络sshd配置、域名配置
- POJ 1837 Balance(DP)
- RecyclerView的拖动和滑动 第二部分 :拖块,Grid以及自定义动画