uva437 DAG
直接套用DAG的思路就行。
AC代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int INF=1<<30;
const int maxn=50;
int dp[maxn][3];
int G[maxn][3][maxn][3];
struct node{
int a[3],b[3],c[3];
node(){}
node(int x,int y,int z){
a[0]=x,b[0]=y,c[0]=z;
a[1]=x,b[1]=z,c[1]=y;
a[2]=y,b[2]=z,c[2]=x;
}
};
int n;
node u[maxn];
int solve(int i,int p){ //表示第i个格子p在顶面
if(dp[i][p]!=-1) return dp[i][p];
int t=u[i].c[p]; //高度
dp[i][p]=t;
for(int j=0;j<n;++j){
for(int k=0;k<3;++k){
if(G[i][p][j][k]) dp[i][p]=max(dp[i][p],solve(j,k)+t);
}
}
return dp[i][p];
}
int main(){
int kase=1;
while(scanf("%d",&n)==1&&n){
memset(G,0,sizeof(G));
memset(dp,-1,sizeof(dp));
int a,b,c;
for(int i=0;i<n;++i){
scanf("%d%d%d",&a,&b,&c);
u[i]=node(a,b,c);
}
for(int i=0;i<n;++i)
for(int j=0;j<n;++j){
for(int k=0;k<3;++k)
for(int h=0;h<3;++h){
if(u[i].a[k]>u[j].a[h]&&u[i].b[k]>u[j].b[h]||u[i].a[k]>u[j].b[h]&&u[i].b[k]>u[j].a[h])
G[i][k][j][h]=1;
}
}
//枚举起点
int ans=-INF;
for(int i=0;i<n;++i){
ans=max(ans,solve(i,0));
ans=max(ans,solve(i,1));
ans=max(ans,solve(i,2));
}
printf("Case %d: maximum height = %d\n",kase++,ans);
}
return 0;
}
如有不当之出欢迎指出!
uva437 DAG的更多相关文章
- UVA - 10131Is Bigger Smarter?(DAG上的DP)
题目:UVA - 10131Is Bigger Smarter? (DAG) 题目大意:给出一群大象的体重和IQ.要求挑选最多的大象,组成一个序列.严格的体重递增,IQ递减的序列.输出最多的大象数目和 ...
- LIS的简单应用:UVA-437
上一次紫芝详细地介绍了动态规划中的经典问题LIS,今天我们抽出一个类似思想的简单题目进行实践练习. The Tower of Babylon(巴比伦塔) Perhaps you have heard ...
- Uva437 The Tower of Babylon
https://odzkskevi.qnssl.com/5e1fdf8cae5d11a8f572bae96d6095c0?v=1507521965 Perhaps you have heard of ...
- UVA103 dp基础题,DAG模型
1.UVA103 嵌套n维空间 DAG模型记忆化搜索,或者 最长上升子序列. 2.dp[i]=max( dp[j]+1),(第i个小于第j个) (1) //DAG模型记忆化搜索 #include< ...
- JavaScript + SVG实现Web前端WorkFlow工作流DAG有向无环图
一.效果图展示及说明 (图一) (图二) 附注说明: 1. 图例都是DAG有向无环图的展现效果.两张图的区别为第二张图包含了多个分段关系.放置展示图片效果主要是为了说明该例子支持多段关系的展现(当前也 ...
- CF721C. Journey[DP DAG]
C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...
- [CF225C] Barcode (简单DAG上dp)
题目链接:http://codeforces.com/problemset/problem/225/C 题目大意:给你一个矩阵,矩阵中只有#和.两种符号.现在我们希望能够得到一个新的矩阵,新的矩阵满足 ...
- 九、DAG hierarchy
DAG 节点有两种,Transformation/shape. shape节点是transformation的子节点. transformation节点包括position, rotation, sc ...
- 02_嵌套矩形(DAG最长路问题)
来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题2: 问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件 ...
随机推荐
- Linux exec与文件描述符
看到好几篇文章讲述exec都是一知半解,所以我尽量说的清楚明白一些.本文首先讲述Linux文件描述符,然后是exec,最后举例说明exec I/O重定向及其用法. 概念:exec命令用于调用并执行指令 ...
- Java并发系列[1]----AbstractQueuedSynchronizer源码分析之概要分析
学习Java并发编程不得不去了解一下java.util.concurrent这个包,这个包下面有许多我们经常用到的并发工具类,例如:ReentrantLock, CountDownLatch, Cyc ...
- ios MVVM实践 刷新网络请求+tableView展示数据
[实现效果] [目录结构相关] 此示例展示用的是MVVM结构形式,表述如下 M:数据Model的存储,可以用来对属性进行处理.(即胖model概念,上图中xx万人订阅这个处理方法写在Model内) V ...
- Unity DoTween 动画使用案例
这边我就直接放一个标准的Dotween动画的使用demo吧. 这个案例满足应该可以完成你所想实现的几乎所有复杂动画. void PlayTween() { //set tween data float ...
- python --- queue模块使用
1. 什么是队列? 学过数据结构的人都知道,如果不知道队列,请Google(或百度). 2. 在python中什么是多生产者,多消费模型? 简单来说,就是一边生产(多个生产者),一边消费(多个消费者) ...
- zookeeper 环境搭建
1.准备三台服务器 ip分别为:192.168.100.128.192.168.100.129.192.168.100.133 a.修改主机名称 vi /etc/sysconfig/network 修 ...
- C#基础(四)--值类型和引用类型,栈和堆的含义
本文主要是讨论栈和堆的含义,也就是讨论C#的两种类据类型:值类型和引用类型: 虽然我们在.net中的框架类库中,大多是引用类型,但是我们程序员用得最多的还是值类型. 引用类型如:string,Obje ...
- 以Apache模块的方式编译安装php-5.5.4
新建用户及用户组 groupadd webuser useradd -g webuser webuser 下载php-5.5 下载地址:http://pan.baidu.com/s/1o6I6Lnk ...
- iOS-Xcode编码自动补全失效
1. 退出 Xcode 2. 重启电脑 3. 找到 这个 DerivedData 文件夹 删除 (路径: ~/Library/Developer/Xcode/DerivedData) 4. 删除这个 ...
- AC 自动机 模板
简单版 #include <iostream> #include <cstdio> #include <algorithm> #include <cstrin ...