例题 9-2 巴比伦塔(The Tower of Babylon, UVa 437)
原题链接:https://vjudge.net/problem/UVA-437
分类:DAG
备注:记忆化搜索
#include<bits/stdc++.h>
using namespace std;
const int maxn=35;
struct Cube{int len,wid,hig;
}c[maxn*3];
int res[maxn*3],n,tot,kase;
int dp(int ind){if(res[ind])return res[ind];res[ind]=c[ind].hig;for(int i=1;i<=tot;i++){if((c[ind].len>c[i].len&&c[ind].wid>c[i].wid)||(c[ind].len>c[i].wid&&c[ind].wid>c[i].len))res[ind]=max(res[ind],dp(i)+c[ind].hig);}return res[ind];
}
int main(void){// freopen("in.txt","r",stdin);while(~scanf("%d",&n)&&n){memset(res,0,sizeof(res));tot=0;for(int i=1;i<=n;i++){int a,b,h;scanf("%d%d%d",&a,&b,&h);tot++;c[tot].len=a; c[tot].wid=b; c[tot].hig=h;tot++;c[tot].len=a; c[tot].wid=h; c[tot].hig=b;tot++;c[tot].len=h; c[tot].wid=b; c[tot].hig=a;}for(int i=1;i<=tot;i++)if(!res[i])dp(i);int ans=0;for(int i=1;i<=tot;i++)ans=max(ans,res[i]);printf("Case %d: maximum height = %d\n",++kase,ans);}return 0;
}
例题 9-2 巴比伦塔(The Tower of Babylon, UVa 437)相关推荐
- UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)
整理的算法模板合集: ACM模板 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形. 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b) ...
- Uva 437 - The Tower of Babylon(DP)
题目链接 https://vjudge.net/problem/UVA-437 [题意] 给定n种不同的立方体,每种立方体都有无穷多个,现在要用它们跌放在一起组成一个巴比伦塔,并且处在某 ...
- 【UVA 437】The Tower of Babylon(记忆化搜索写法)
[题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...
- uva437The Tower of Babylon
题意:给定n个长方体,叠加长方体,规则是上面的长方体长和宽都要小于下面的长方体.每种长方体有无数个,问叠加最高为多少. 分析:dp,递归搜索最大高度.' #include<iostream> ...
- uva 437——The Tower of Babylon
题意:给定n个长方体,然后堆积最高的塔,要求上面的面积小于下面的面积. 思路:Dp,先把长方体的所有放的情况都构造出来放到数组里,对于当前节点,如果能够在前面找到面积比当前小,高度累加比当前高的则转移 ...
- 【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)
[Solution] 接上一篇,在处理有向无环图的最长链问题的时候,可以在做拓扑排序的同时,一边做DP; 设f[i]表示第i个方块作为最上面的最高值; f[y]=max(f[y],f[x]+h[y]) ...
- 【DP】【Uva437】UVA437 The Tower of Babylon
传送门 Description Input Output Sample Input 1 10 20 30 2 6 8 10 5 5 5 7 1 1 1 2 2 2 3 3 3 4 4 4 5 5 5 ...
- 33行代码AC——例题6-5 移动盒子(Boxes in a Line, UVa 12657)——解题报告
题目大意 对升序排列的n个数字(1开始编号)进行一系列操作,输出最终序列的奇位数之和.操作如下: 1 X Y:把X移到Y左侧 2 X Y:把X移到Y右侧 3 X Y:交换X和Y 4:反转序列(逆置) ...
- 30行代码AC——例题6-3 矩阵链乘(Maxtrix Chain Multiplication, UVa 442)——解题报告
励志用尽量少的代码做高效的表达. 题目(提交)链接→UVa-442 储备知识: 矩阵相乘次数: 如图:A矩阵*B矩阵得到C矩阵. C矩阵中元素个数=A矩阵行数*B矩阵列数.得到C矩阵中任意元素都需要运 ...
- 例题 8-4 传送中的车(Fabled Rook, UVa 11134)
原题链接:https://vjudge.net/problem/UVA-11134 分类:贪心法 备注:问题分解 可以看出两个维度上的问题是独立的,因此把二维问题化成一维问题 贪心思想看:https: ...
最新文章
- LINUX中断学习笔记【转】
- c++ const 类型检查
- Redis快的原因:内存操作 单线程没有切换开销 多路复用IO
- 95后CV工程师晒出工资单:狠补了这个,真香…
- 预训练语言模型真的是世界模型?
- mysql 1524_MySQL不允许用户登录:错误1524
- 6阶群的非平凡子群_离散数学复习笔记
- mysql tee_MySQL 使用tee记录语句和输出日志
- 二进制转十六进制的详细步骤
- butter滤波器是iir吗_IIR Butterworth型模拟低通滤波器设计原理
- SAP-ABAP-小计收起/折叠明细项目-只显示小计内容
- 小众播客,音乐平台的新战场?
- 支持个性化定制的酷玩多功能桌面充电器上手体验
- 试试多线程(java)
- IDEA中创建启动Vue项目--搭建vue项目
- json解析 C# json解析
- js单行代码------数组
- mysql strlen 函数_sizeof和strlen函数区别
- selenium打开谷歌浏览器
- 【ArcGIS Pro二次开发】系列学习笔记,持续更新,记得收藏