题意:给定n个长方体,叠加长方体,规则是上面的长方体长和宽都要小于下面的长方体。每种长方体有无数个,问叠加最高为多少。

分析:dp,递归搜索最大高度。‘

#include<iostream>
#include<string.h>
#include<sstream>
#include<set>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<math.h>
using namespace std;
#define REP(i,n) for(int i=0;i<n;i++)
const int maxn = 30 + 5;
int v[maxn][3];
int d[maxn][3];
int n;
int dp(int i, int j) {//i表示长方体编号,j为高int &ans = d[i][j];if (ans > 0)return ans;ans = 0;int l1[2], l2[2],len=0;REP(l, 3)if (l != j)l1[len++] = v[i][l];REP(a,n)REP(b, 3) {len = 0;REP(l, 3)if (l != b)l2[len++] = v[a][l];if (l2[0] < l1[0] && l2[1] < l1[1])ans = max(ans, dp(a, b));}ans += v[i][j];return ans;
}
int main()
{int kase = 0;while (cin >> n && n) {REP(i,n){REP(j,3)cin >> v[i][j];sort(v[i], v[i] + 3);}memset(d, 0, sizeof(d));int ans = 0;REP(i,n)//枚举第一层长方体{ REP(j, 3) {ans = max(ans, dp(i, j));}}cout << "Case " << ++kase << ": maximum height = " << ans << endl;}return 0;
}

uva437The Tower of Babylon相关推荐

  1. UVA437 巴比伦塔 The Tower of Babylon(矩形嵌套进阶版、DAG上DP、记忆化搜索)

    整理的算法模板合集: ACM模板 本题和基础的矩形覆盖差不多,只不过变成了三维的长方形. 因为每次转移的时候只有顶面的x和y会影响决策的进行,所以我们只需要用一个二元组(a,b)(a, b)(a,b) ...

  2. 【UVA 437】The Tower of Babylon(记忆化搜索写法)

    [题目链接]:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_probl ...

  3. uva 437——The Tower of Babylon

    题意:给定n个长方体,然后堆积最高的塔,要求上面的面积小于下面的面积. 思路:Dp,先把长方体的所有放的情况都构造出来放到数组里,对于当前节点,如果能够在前面找到面积比当前小,高度累加比当前高的则转移 ...

  4. 【UVA 437】The Tower of Babylon(拓扑排序+DP,做法)

    [Solution] 接上一篇,在处理有向无环图的最长链问题的时候,可以在做拓扑排序的同时,一边做DP; 设f[i]表示第i个方块作为最上面的最高值; f[y]=max(f[y],f[x]+h[y]) ...

  5. Uva 437 - The Tower of Babylon(DP)

    题目链接 https://vjudge.net/problem/UVA-437 [题意]        给定n种不同的立方体,每种立方体都有无穷多个,现在要用它们跌放在一起组成一个巴比伦塔,并且处在某 ...

  6. 【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 ...

  7. C语言里 指针变量强制类型转换,C语言之强制类型转换与指针--#define DIR *((volatile unsigned int *) 0x0022)...

    强制类型转换形式:(类型说明符) (表达式) 举例说明:1) int a; a = (int)1.9; 2)char *b; int *p; p = (int *) b; //将b的值强制转换为指向整 ...

  8. Competitive Programming 3题解

    题目一览: Competitive Programming 3: The New Lower Bound of Programming Contests(1) Competitive Programm ...

  9. 杭电oj题目题型分类(转)

    1001 整数求和 水题 1002 C语言实验题--两个数比较 水题 1003 1.2.3.4.5... 简单题 1004 渊子赛马 排序+贪心的方法归并 1005 Hero In Maze 广度搜索 ...

最新文章

  1. ERP成功全球实施十大成功案例
  2. Deepgreen Greenplum DBA小白普及课之三(备份问题解答)
  3. 专家门诊[第258期] 备战2012下半年软考——项目管理、网络工程
  4. java实现对英文字母去重_LeetCode算法题-Unique Morse Code Words(Java实现)
  5. Dottrace跟踪代码执行时间
  6. 如何在ASP.NET Core中使用JSON Patch
  7. 一个C++工程内存泄漏问题的排查及重现工程
  8. python编程100个小程序-整理了适合新手的20个Python练手小程序
  9. 《流畅的Python》读书笔记——Python文本和字节序列
  10. ps黑作坊终极天空大师 一键换天空终极版破解版扩展面板
  11. PLT图纸外发控制系统
  12. 中兴新支点操作系统——背景、徽标大起底
  13. 一年工作经验的java工程师从工作初到今天的所有收藏的…
  14. 使用EF配合Linq语句进行查询
  15. 树莓派4正式发布!TYPE-C,USB3.0,支持4K双屏,售价35美金起
  16. Velocity中使用FCKeditor(FCKeditor for java)
  17. MCE | 第二代 HIV-INSTI 的作用方式
  18. larver php7.0,关于PHP7.0与PHP5.6下Laravel博客应用性能对比分析详解
  19. iOS 笔记 【经典】
  20. 界面与程序分离---MIS开发新方法

热门文章

  1. MQ 的本质是什么呢?
  2. Atomic Integer 原理分析-其他方法
  3. Maven的依赖管理
  4. sqoop增量导入hdfs和导出
  5. 序列化和反序列化的概述
  6. 方法引用_通过类名引用静态成员方法
  7. 两个引用指向同一个数组的内存图
  8. 循环基础-第一个while循环
  9. Hello Python程序演练
  10. SpringBoot高级-任务-异步任务