uva 437 (dag 最长路)
来源:互联网 发布:java jdk1.6 64位下载 编辑:程序博客网 时间:2024/05/22 13:26
题意:给出n个长方形,每个长方形都有无数多个,问怎么排列能使高度最高,最高的高度是多少? 长方形三条边的任意一条都能作为高,所以一个长方形可产生三种长方形。
然后直接用dag最长路。
#include<iostream>#include<cstdio>#include<string>#include<cstring>#include<algorithm>#include<cmath>using namespace std;#define inf 111111111int dp[200];struct node{ int l,w,h;}rec[200];int n;int ans;void init(){ memset(dp,0,sizeof(dp)); ans=0; int a,b,c; n*=3; rec[0].l=rec[0].w=rec[0].h=inf; for(int i=1;i<=n;i+=3) { cin>>a>>b>>c; rec[i].l=a;rec[i].w=b;rec[i].h=c; rec[i+1].l=b;rec[i+1].w=c;rec[i+1].h=a; rec[i+2].l=c;rec[i+2].w=a;rec[i+2].h=b; }}void slove(int k){ for(int i=1;i<=n;i++) { if(((rec[k].l>rec[i].l&&rec[k].w>rec[i].w)|| (rec[k].l>rec[i].w&&rec[k].w>rec[i].l))&&dp[i]<dp[k]+rec[i].h) { dp[i]=dp[k]+rec[i].h; slove(i); } } if(ans<dp[k]) ans=dp[k];}int main(){ int cas=0; while(cin>>n) { cas++; if(n==0) break; init(); slove(0); printf("Case %d: maximum height = %d\n",cas,ans); } return 0;}
- uva 437 (dag 最长路)
- UVA 437 DAG最长路
- uva 437 The Tower of Babylon(DAG最长路)
- uva 437 - The Tower of Babylon(DAG最长路)
- UVA 437 - The Tower of Babylon(DAG最长路)
- uva 10131 Is Bigger Smarter?(DAG最长路)
- uva 10051 Tower of Cubes(DAG最长路)
- uva 103 (DAG矩形嵌套最长路)
- UVA 437 The Tower of Babylon (DAG上的无源最长路 or LIS)
- uva 103 - Stacking Boxes DAG最长路
- uva 437 The Tower of Babylon 矩形嵌套模型,DAG最长路,水
- POJ-2241 uva 437 The Tower of Babylon 记忆化搜索 DAG最长路
- UVA 437The Tower of Babylon (dp + DAG最长序列)
- UVA 11324 The Largest Clique (强连通缩点 + DAG最长路)
- UVA 103 Stacking Boxes(DAG 上的最长路及其字典序输出)
- 强连通分量,DAG上的最长路,记忆化搜索(最大团,UVA 11324)
- UVa:10000 Longest Paths (DAG上的最长路)
- uva 10029 - Edit Step Ladders(巧妙构图 + Dag最长路)
- java 获取当前类的绝对路径
- Android SDK 更新错误 refused
- XML是什么,它可以做什么?——写给XML入门者
- HTML中Id和Name的区别
- MapReduce Design Patterns-chapter 3
- uva 437 (dag 最长路)
- OpenGL入门学习
- skiing-记忆化深搜
- Ubuntu下的Ubuntu虚拟机--源配置问题:apt-get update 显示could not resolve 'mirrors.163.com'
- SSH原理与运用:远程操作与端口转发
- Android_Intent意图详解
- Javascript 中的返回函数和闭包
- 请教我的PLSQL连服务器两个实例,无论输入任一数据库的用户名密码都是进同一个,请问有哪些原因?谢谢
- 把数组排成最小的数