uva 437 The Tower of Babylon(DAG最长路)
来源:互联网 发布:arraypush php 编辑:程序博客网 时间:2024/05/16 09:04
题目连接:437 - The Tower of Babylon
题目大意:可以理解成有n种类型的长方体,现在给出每中长方体的长宽高, 然后要选取若干个长方体来玩堆积木(可以选取同种类型的长方体), 要尽量使得堆出来的塔越高, 堆积木的时候要求下面的积木长宽一定要分别大于上面的那个积木(这样同种积木也有可能叠加)。
解题思路:DAG最长路径, 因为下面一个的长方体的长宽要分别大于上面一个长方体的长宽,所以为了不出先环状的结构,让一种长方体分解成三个长方体。让后用普通的最长路径去做。
#include <stdio.h>#include <string.h>const int N = 100005;struct state { int r; int c; int h;}tmp[N];int n, dp[N];void build(int k) { int a, b, c; scanf("%d%d%d", &a, &b, &c); k *= 3; tmp[k].r = a, tmp[k].c = b, tmp[k++].h = c; tmp[k].r = b, tmp[k].c = c, tmp[k++].h = a; tmp[k].r = c, tmp[k].c = a, tmp[k++].h = b;}int search(int k) { if (dp[k])return dp[k]; for (int i = 0; i < n; i++) {if ((tmp[k].r > tmp[i].r && tmp[k].c > tmp[i].c) || (tmp[k].r > tmp[i].c && tmp[k].c > tmp[i].r)) { if (dp[k] < search(i))dp[k] = search(i);} } return dp[k] += tmp[k].h;}int solve() { n *= 3; int Max = 0; for (int i = 0; i < n; i++) {if (!dp[i]) search(i);if (Max < dp[i]) Max = dp[i]; } return Max;}int main() { int cas = 1; while (scanf("%d", &n) == 1 && n) {// Init;memset(tmp, 0, sizeof(tmp));memset(dp, 0, sizeof(dp));// Read;for (int i = 0; i < n; i++) build(i);printf("Case %d: maximum height = %d\n", cas++, solve()); } return 0;}
- uva 437 The Tower of Babylon(DAG最长路)
- uva 437 - The Tower of Babylon(DAG最长路)
- UVA 437 - The Tower of Babylon(DAG最长路)
- UVA 437 The Tower of Babylon (DAG上的无源最长路 or LIS)
- UVA 437The Tower of Babylon (dp + DAG最长序列)
- uva 437 The Tower of Babylon 矩形嵌套模型,DAG最长路,水
- POJ-2241 uva 437 The Tower of Babylon 记忆化搜索 DAG最长路
- uva 437 The Tower of Babylon(DAG的DP)
- UVA 437 - The Tower of Babylon (DAG)
- UVa 437 - The Tower of Babylon(DAG动态规划)
- uva 437 The Tower of Babylon (DAG)
- UVA 437The Tower of Babylon (DAG)
- The Tower of Babylon (DAG最长路算法模板)
- 动态规划 DAG问题uva 437 The Tower of Babylon
- UVa 437 The Tower of Babylon (DP&DAG)
- 例题9-2 UVa437 The Tower of Babylon(DP:DAG中的最长路)
- UVA 437 The Tower of Babylon(DAG上的动态规划)
- UVA 437 The Tower of Babylon 巴比伦塔(DAG上的动态规划)
- 转载:PostgreSQL学习手册(六) 索引
- rabbitmq五---接收符合特定路由规则的消息
- Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发
- shell中用指定用户运行命令 su
- 手机Web
- uva 437 The Tower of Babylon(DAG最长路)
- 使用query()方法进行模糊查询
- Android调用Camera实现自定义照相
- poj.1328贪心
- HDU 3341 Lost's revenge (AC自动机+DP,5级)
- 利用Limit完成数据的分页显示
- SQL Server 2008怎样添加自增列
- 百度云环境提交git错误:You can't add/del workspace by yourself, use platform please
- ajaxupload 使用例子