直接套用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的更多相关文章

  1. UVA - 10131Is Bigger Smarter?(DAG上的DP)

    题目:UVA - 10131Is Bigger Smarter? (DAG) 题目大意:给出一群大象的体重和IQ.要求挑选最多的大象,组成一个序列.严格的体重递增,IQ递减的序列.输出最多的大象数目和 ...

  2. LIS的简单应用:UVA-437

    上一次紫芝详细地介绍了动态规划中的经典问题LIS,今天我们抽出一个类似思想的简单题目进行实践练习. The Tower of Babylon(巴比伦塔) Perhaps you have heard ...

  3. Uva437 The Tower of Babylon

    https://odzkskevi.qnssl.com/5e1fdf8cae5d11a8f572bae96d6095c0?v=1507521965 Perhaps you have heard of ...

  4. UVA103 dp基础题,DAG模型

    1.UVA103 嵌套n维空间 DAG模型记忆化搜索,或者 最长上升子序列. 2.dp[i]=max( dp[j]+1),(第i个小于第j个) (1) //DAG模型记忆化搜索 #include< ...

  5. JavaScript + SVG实现Web前端WorkFlow工作流DAG有向无环图

    一.效果图展示及说明 (图一) (图二) 附注说明: 1. 图例都是DAG有向无环图的展现效果.两张图的区别为第二张图包含了多个分段关系.放置展示图片效果主要是为了说明该例子支持多段关系的展现(当前也 ...

  6. CF721C. Journey[DP DAG]

    C. Journey time limit per test 3 seconds memory limit per test 256 megabytes input standard input ou ...

  7. [CF225C] Barcode (简单DAG上dp)

    题目链接:http://codeforces.com/problemset/problem/225/C 题目大意:给你一个矩阵,矩阵中只有#和.两种符号.现在我们希望能够得到一个新的矩阵,新的矩阵满足 ...

  8. 九、DAG hierarchy

    DAG 节点有两种,Transformation/shape. shape节点是transformation的子节点. transformation节点包括position, rotation, sc ...

  9. 02_嵌套矩形(DAG最长路问题)

    来源:刘汝佳<算法竞赛入门经典--训练指南> P60 问题2: 问题描述:有n个矩形,每个矩形可以用两个整数a,b描述,表示它们的长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中的条件 ...

随机推荐

  1. 优秀的基于VUE移动端UI框架合集

    1. vonic 一个基于 vue.js 和 ionic 样式的 UI 框架,用于快速构建移动端单页应用,很简约,是我喜欢的风格 star 2.3k 中文文档 在线预览 2.vux 基于WeUI和Vu ...

  2. http_build_query()函数使用方法

    http_build_query()函数的作用是使用给出的关联(或下标)数组生成一个经过 URL-encode 的请求字符串. 写法格式:http_build_query ( mixed $query ...

  3. Unity Android 5.6版本Resources.Load效率的问题

    0x00 前言 相信不少使用Unity的小伙伴都听说过,甚至也亲身经历过在Unity5.6最初的几个版本中使用Resources.Load方法加载资源变--慢的问题. 这个问题的确是存在的,比如这个i ...

  4. MTF 曲线图解读

    最近想入手佳能小小白(EF70-200 F4.0 USM),购买镜头的时候,在镜头厂商的产品页看到下面形状的曲线图: 这是什么意思呢?看着很复杂的样子啊?百度了一圈学习了一下,下面做个简单的分析. 这 ...

  5. ssh免秘钥登录

    简介 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前较可靠,专为远程 ...

  6. HTTP请求和MIME介绍

    HTTP请求和MIME介绍 HTTP请求由三部分组成,分别是: 请求行,消息报头,请求正文. 请求行(格式): Method Request-URI HTTP-Version CRLF Method: ...

  7. 开发快速定位需求(Coding之前的工作)

    自我总结,求高人指点,欢迎拍砖! 目的:快速定位feature需求,避免浪费不必要的时间 需求目的:它要用来解决什么问题?(客户需求,bug fixed,学习新技术) 需求对象:它针对的对象是谁?(明 ...

  8. [DeeplearningAI笔记]Multi-class classification多类别分类Softmax regression_02_3.8-3.9

    Multi-class classification多类别分类 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.8 Softmax regression 原有课程我们主要介绍的是二分分类( ...

  9. ng-show,ng-if区别

    在使用bootstrap中,我们会经常用到按钮组,也就是btn-group,如果仔细观察的话,会发现一个按钮组的第一个和最后一个按钮分别是有圆角的,如下图: 但是中间的按钮是没有圆角的,这样显得比较美 ...

  10. 利用 secureCRT 直接上传下载文件 (sz,rz)

    在window下向linux传送文件的方法. 首先在window中安装SecureCRT,然后在快速连接中建立一个到linux的连接,当然,你要先知道你的系统的ip,在终端中键入ifconfig可以查 ...