题目链接:https://uva.onlinejudge.org/external/4/437.pdf

题意:巴比伦塔:

给出n种立方体,一个立方体能放到另一个立方体上,必须满足,底面一定要小于下面的立方体。求巴比伦塔最多堆多高?

分析:

DAG很容易想到,主要是状态的描叙。

一个立方体,他有3种情况,状态的描叙就用dp[id][3],此时dp[][i] I 来记录哪个是高。

#include <bits/stdc++.h>

using namespace std;

int blocks[][];
int d[][];
int n; void get_dimensions(int *v,int b,int dim) {
int idx = ;
for(int i=;i<;i++) {
if(i!=dim)
v[idx++] = blocks[b][i];
}
} int dp(int i,int j)
{
int& ans = d[i][j];
if(ans>) return ans; ans = ;
int v[],v2[];
get_dimensions(v,i,j);
for(int a=;a<n;a++) {
for(int b=;b<;b++) {
get_dimensions(v2,a,b);
if(v2[]<v[]&&v2[]<v[])
ans = max(ans,dp(a,b));
}
}
ans+=blocks[i][j];
return ans;
} int main()
{
int cases = ;
while(scanf("%d",&n),n) {
for(int i=;i<n;i++) {
for(int j=;j<;j++) {
scanf("%d",&blocks[i][j]);
}
sort(blocks[i],blocks[i]+);
} memset(d,,sizeof(d)); int ans = ; for(int i=;i<n;i++) {
for(int j=;j<;j++) {
ans = max(ans,dp(i,j));
}
} printf("Case %d: maximum height = %d\n",cases++,ans); }
return ;
}

uva 437,巴比伦塔的更多相关文章

  1. uva 437 巴比伦塔(DAG上dp)

    巴比伦塔 紫书P269 看完紫书,终于可以自己写一个dp了 :) [题目链接]巴比伦塔 [题目类型]DAG上dp &题意: 有n种立方体 n<=30,每种有无穷个,要求选一些立方体摞成一 ...

  2. Uva 437 巴比伦塔 && UVA10003

    要求底面严格小于它下方立方体的长宽,求出最高情况,一块石头可以多次使用 用结构体记录一块石头的三种放置情况,按面积排序. dp[i] = max(dp[i],dp[j] + block[i].high ...

  3. UVa 437 巴比伦塔

    https://vjudge.net/problem/UVA-437 这道题和HDU的Monkey and Banana完全一样. #include<iostream> #include& ...

  4. UVA 437 巴比伦塔 【DAG上DP/LIS变形】

    [链接]:https://cn.vjudge.net/problem/UVA-437 [题意]:给你n个立方体,让你以长宽为底,一个个搭起来(下面的立方体的长和宽必须大于上面的长和宽)求能得到的最长高 ...

  5. UVA 437 十九 The Tower of Babylon

    The Tower of Babylon Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Subm ...

  6. UVA 437 The Tower of Babylon巴比伦塔

    题意:有n(n≤30)种立方体,每种有无穷多个.要求选一些立方体摞成一根尽量高的柱子(可以自行选择哪一条边作为高),使得每个立方体的底面长宽分别严格小于它下方立方体的底面长宽. 评测地址:http:/ ...

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

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

  8. UVa 437 The Tower of Babylon(经典动态规划)

    传送门 Description Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details ...

  9. UVa 437 The Tower of Babylon

    Description   Perhaps you have heard of the legend of the Tower of Babylon. Nowadays many details of ...

随机推荐

  1. 学习jsp(1)

    我的开发环境是:jdk1.7;netbean ;tomcat7. 尝试着写了第一个程序: ublic class myServlet extends HttpServlet{    @Override ...

  2. Eclipse中进行Gradle+Jetty部署的web项目的断点调试

    1.自行配置好build.gradle文件和按照gradle的web项目目录结构规范建立java.resourece和webapp文件夹 可在build.gradle文件中自由设定“http端口” 1 ...

  3. 树链剖分(线段树区间更新求和(lazy操作)hdu3966)

    题意:给出一颗树形图,有三种操作,I:在u到v的路径上的每个点的权值+d,D:在u到v的路径上的每个点的权值都-d,Q询问u点的权值 #pragma comment(linker, "/ST ...

  4. JSP和servlet有什么区别?

    JSP和servlet有什么区别? JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达. JSP编译后是"类servlet". Servlet ...

  5. linux环境变量与本地变量

    两者不同的是. 环境变量可以在shell的子进程中使用, 而本地变量不同. 每当连接上服务器时,服务器就会通过帐号密码运行一个SHELL,我们所做的工作都在这个SHELL上,特殊方法除外(如,守护进程 ...

  6. 动画--过渡函数 transition-timing-function

    transition-timing-function属性指的是过渡的“缓动函数”.主要用来指定浏览器的过渡速度,以及过渡期间的操作进展情况,其中要包括以下几种函数: (单击图片可放大) 案例展示: 在 ...

  7. C#委托实例

    using System; using System.Collections.Generic; using System.Linq; using System.Text;   namespace we ...

  8. oracle中的常用语句

    1:查看当前用户的缺省表空间 SELECT USERNAME, DEFAULT_TABLESPACE FROM USER_USERS; 2:查看当前用户的角色 SELECT * FROM USER_R ...

  9. 取客户的银行帐号SQL

    SELECT ibybanks.bank_name, --银行 ibybanks.bank_branch_name, --分行 ibybanks.bank_account_num_electronic ...

  10. MyEclipse 死掉,JVM terminated. Exit code=1073807364

    刚入手的新成员,刚开始使用myeclipse,是不是会有一大堆的问题,然后没有目标的走,这里有个小技巧,那就是如果做项目出现问题,一定要自己现在网络搜寻答案,网络时代.技术时代走到现在,一定有他的道理 ...