https://vjudge.net/problem/UVA-437

这道题和HDU的Monkey and Banana完全一样。

 #include<iostream>
#include<algorithm>
using namespace std; struct node
{
int l, w, h;
}v[]; int dp[]; //存储第i块立方体为底时的最大高度 bool cmp(node x, node y) //sort的排序方法,按长从小到大排序
{
/*
if (x.l < y.l) return 1;
else if (x.l == y.l && x.w < y.w) return 1;
else return 0;
*/ if (x.l == y.l) return x.w < y.w;
return x.l < y.l;
} int main()
{
//freopen("D:\\txt.txt", "r", stdin);
int n, a, b, c;
int kase = ;
while (cin >> n && n)
{
int k = ;
for (int i = ; i < n; i++)
{
cin >> a >> b >> c;
v[k].l = a; v[k].w = b; v[k++].h = c;
v[k].l = a; v[k].w = c; v[k++].h = b;
v[k].l = b; v[k].w = a; v[k++].h = c;
v[k].l = b; v[k].w = c; v[k++].h = a;
v[k].l = c; v[k].w = a; v[k++].h = b;
v[k].l = c; v[k].w = b; v[k++].h = a;
}
sort(v, v + k, cmp);
int maxn = ;
for (int i = ; i < k; i++)
{
dp[i]=v[i].h;
for (int j = ; j < i; j++)
{
if (v[j].l < v[i].l && v[j].w < v[i].w) //如果第j块能搭在第i块上
{
dp[i] = max(dp[i], dp[j] + v[i].h);
}
}
if (dp[i]>maxn) maxn = dp[i];
}
cout << "Case " << ++kase << ": maximum height = " << maxn << endl;
}
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 巴比伦塔 【DAG上DP/LIS变形】

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

  4. UVA 437 十九 The Tower of Babylon

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

  5. uva 437,巴比伦塔

    题目链接:https://uva.onlinejudge.org/external/4/437.pdf 题意:巴比伦塔: 给出n种立方体,一个立方体能放到另一个立方体上,必须满足,底面一定要小于下面的 ...

  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. 智能指针 - 现代C++新特性总结

    C++98中的智能指针通过一个模板类auto_ptr来实现,new操作符返回的指针可以交由它来管理,程序员不用再显式的调用delete,这在一定程度上避免了堆内存忘记释放的问题:不过auto_ptr有 ...

  2. visio 的使用方法

    1:往visio中添加商务图形和形状的方法.例如饼状图. 文件>形状>商务>图表和图形>绘制图表形状 2:visio 画半弧形,用铅笔 3: visio 画的图形,如果想要和v ...

  3. (转)spring boot整合redis

    一篇写的更清晰的文章,包括redis序列化:http://makaidong.com/ncjava/330749_5285125.html 1.项目目录结构 2.引入所需jar包 <!-- Sp ...

  4. PHP学习必读的20本书

    PHP相关<PHP程序设计>(第2版) –PHP语法和入门最好的书<PHP5权威编程> –PHP入门后升级书<深入PHP:面向对象.模式与实践>(第3版) –理解P ...

  5. [LeetCode] 116&117. Populating Next Right Pointers in Each Node I&II_Medium tag: BFS(Dont know why leetcode tag it as DFS...)

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  6. 测试常用的Oracle11G 命令行指令。

    测试常用的Oracle11G 命令行指令. ×××××××××××××××× 登录:

  7. recv函数返回值说明

    recv函数 int recv( SOCKET s, char FAR *buf, int len, int flags); 不论是客户还是服务器应用程序都用recv函数从TCP连接的另一端接收数据. ...

  8. Twitter OA prepare: Two Operations

    准备T家OA,网上看的面经 最直接的方法,从target降到1,如果是奇数就减一,偶数就除2 public static void main(String[] args) { int a = shor ...

  9. 从游戏开发到web前端——仅仅只是开始

    文章开头,请允许我随便扯扯. 一来,开头从来都是最难写的,二来,描述我现在的心情和状态以及工作背景啥的,对于大家理解后面的内容也许会有所帮助~ 2012年211大学毕业,工作4年了,一直都是做游戏前端 ...

  10. JQuery Form AjaxSubmit(options)在Asp.net中的应用注意事项

    所需引用的JS: 在http://www.malsup.com/jquery/form/#download 下载:http://malsup.github.com/jquery.form.js 在ht ...