HDU 1069 Monkey and Banana DP LIS

原创 2013年12月03日 21:32:21

http://acm.hdu.edu.cn/showproblem.php?pid=1069


题目大意

一群研究员在研究猴子的智商(T T禽兽啊,欺负猴子!!!),他们决定在房顶放一串香蕉,并且给猴子n种砖块。

砖块长宽高分别为xyz,每一种可以取任意个,并且他们可以随意的摆放。

然后要求堆叠起来的砖块上面的必须严格小于下面的。

求最大可以堆叠的高度。


思路:

转化为LIS问题,把每一种摆放方法如(10,20,30)(可以以20 30 作为底,10作为高)都放进数组,然后就是求最大上升子序列。

#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=200;
struct data
{
    int x,y;
    int h;
}a[MAXN];
bool operator <(const data &a,const data &b)
{
    return a.x<b.x;
}
int main()
{
    int n;
    int kase=1;
    while(scanf("%d",&n),n)
    {
        int len=0;
        int x,y,z;
        for(int i=0;i<n;i++)
        {
            scanf("%d%d%d",&x,&y,&z);
            a[len].x=x;    a[len].y=y;     a[len++].h=z;
            a[len].x=x;    a[len].y=z;     a[len++].h=y;
            a[len].x=y;    a[len].y=x;     a[len++].h=z;    
            a[len].x=y;    a[len].y=z;     a[len++].h=x;    
            a[len].x=z;    a[len].y=x;     a[len++].h=y;    
            a[len].x=z;    a[len].y=y;     a[len++].h=x;    
        } 

        sort(a,a+len);

        int dp[MAXN];
        for(int i=0;i<len;i++)
        {
            dp[i]=a[i].h;
            int temp=0;
            for(int j=0;j<i;j++)
            {
                if(a[i].x>a[j].x && a[i].y >a[j].y)
                    temp=max(temp,dp[j]);
            }
            dp[i]+=temp;
        }
        int ans=0;
        for(int i=0;i<len;i++)
            ans=max(ans,dp[i]);
        
        printf("Case %d: maximum height = %d\n",kase++,ans);
    }

    return 0;
}


ACM-经典DP之Monkey and Banana——hdu1069

ACM,经典DP,Monkey and Banana,hdu1069
  • lx417147512
  • lx417147512
  • 2014年05月22日 17:26
  • 3068

HDU - 1069 Monkey and Banana(DAG)

题目大意:给你N种积木,每种的数量不限,现在要求你求出能用这些积木堆出的最大高度 堆的规则如下:在底下的积木的的长和宽要大于在其上面的所有积木的长和宽解题思路:一种积木有6种摆放方式,所以先预处理出...
  • L123012013048
  • L123012013048
  • 2015年09月26日 10:08
  • 352

杭电ACM1069——Monkey and Banana~~动态规划

题目的意思是:给你N个长方体的长a宽b高c,每一个型号的长方体可以用无限多个。用这些长方体来堆一个高度最高的塔,每一个长方体的长宽大于上面一个长方体的长宽。 一开始是这么想的,一个长方体有3个不同的面...
  • qq_25425023
  • qq_25425023
  • 2015年07月17日 23:25
  • 999

杭电ACM 1069Monkey and Banana

Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other...
  • shellhard
  • shellhard
  • 2017年03月13日 20:48
  • 155

HDU 1069 Monkey and Banana (LIS)

Problem Description A group of researchers are designing an experiment to test the IQ of a monkey...
  • j2_o2
  • j2_o2
  • 2018年02月01日 17:50
  • 22

【HDU】1069 - Monkey and Banana(dp)

点击打开题目 Monkey and Banana Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768...
  • wyg1997
  • wyg1997
  • 2016年08月19日 20:59
  • 288

HDU 1069 Monkey and Banana(dp)

题目链接:HDU 1069 Monkey and Banana dp。 我认为这道题难点在于解决方块无限个的问题,转化到代码中就是一个方块变成六个方块。然后排序,剩下就简单了。 blocks[i...
  • fobdddf
  • fobdddf
  • 2014年03月29日 18:35
  • 389

hdu 1069 Monkey and Banana DP

传送门:hdu 1069 Monkey and Banana题目大意一堆科学家研究猩猩的智商,给他M种长方体,每种N个。然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉。现在给你M种长方体,计...
  • woshinannan741
  • woshinannan741
  • 2016年07月17日 00:58
  • 153

【dp】HDU - 1069 Monkey and Banana

/* 基础dp C - Monkey and Banana 时间: 2017/02/20 题意:叠放立方体,使其叠的高度最大。在按底的长宽排序后,进行求最大子序列和 题解: 1. 在按底的长宽排序后,...
  • qq_33199236
  • qq_33199236
  • 2017年05月06日 15:58
  • 118

[HDU 1069 Monkey and Banana]DP

题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 M...
  • chenningGo
  • chenningGo
  • 2015年08月31日 17:27
  • 140
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1069 Monkey and Banana DP LIS
举报原因:
原因补充:

(最多只允许输入30个字)