POJ 2392 Space Elevator (多重背包)
来源:互联网 发布:java int长度是多少 编辑:程序博客网 时间:2024/05/22 23:51
题目链接:(—_—) zZ
题目大意:The cows are going to space(吐槽:牛要上太空?这真的牛逼),现在奶牛要搭建一个上太空的电梯, 用的是高科技材料板砖,每个板砖有一定的高度,和它最高能堆积在a_i高度处,现在给出k个板砖的信息(每个砖的高度, 所能在的最大高度, 和个数), 求能堆积出的电梯最大高度.
思路:多重背包问题, 把板砖的所在最大高度看成容量, 从小到大的动态转移.
题目大意:
#include <stdio.h>#include <string.h>#include <stdlib.h>#define max(a,b) a>b? a:bstruct node{ int h, a, c;}type[405];int dp[40002], num[40002];int cmp(void const *a, void const *b){ return (*(struct node *)a).a-(*(struct node *)b).a;}int main(){ int i = 0, j = 0, k = 0, m = 0; while(scanf("%d", &k) != EOF) { m = 0; for(i = 0; i<k; i++) { scanf("%d %d %d", &type[i].h, &type[i].a, &type[i].c); if(m<type[i].a) m = type[i].a; } qsort(type, k, sizeof(type[0]), cmp); memset(dp, 0, sizeof(dp)); dp[0] = 1; for(i = 0; i<k; i++) { memset(num, 0, sizeof(num)); for(j = type[i].h; j<=type[i].a; j++) { if(!dp[j] && dp[j-type[i].h] && num[j-type[i].h]<type[i].c) { dp[j] = 1; num[j] = num[j-type[i].h]+1; } } } for(i = m; i>=0; i--) if(dp[i]) { printf("%d\n", i); break; } } return 0;}
- POJ 2392 Space Elevator (多重背包)
- poj 2392 Space Elevator (多重背包)
- POJ 2392-Space Elevator(多重背包)
- poj Space Elevator 2392 (多重背包)
- POJ 2392 Space Elevator(多重背包)
- Space Elevator poj 2392(多重背包)
- 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 2392 Space Elevator(排序+多重背包)
- POJ 2392 Space Elevator (多重背包问题)
- POJ 2392 Space Elevator 多重背包
- POJ 2392 Space Elevator (多重背包+优化)
- poj 2392 Space Elevator (多重背包)
- poj 2392 Space Elevator(多重背包)
- 编程珠玑 第九章 第六题 (isdigit \ isupper\islower)的实现
- SAAS和PAAS之浅见
- UVa 699 - The Falling Leaves
- 对易宝支付的认识与总结
- iOS MBMapkit
- POJ 2392 Space Elevator (多重背包)
- UVa 327 - Evaluating Simple C Expressions
- javascrpt的this与$(this)
- 数据结构--数组--对称矩阵的建立
- liunx常用命令备忘
- 浅谈如何留住用户
- 使用SCP拷贝文件
- 设置IE兼容模式
- [Windows驱动开发](二)基础知识——数据结构