码迷,mamicode.com
首页 > 其他好文 > 详细

HDU 1069 Monkey and Banana dp 题解

时间:2019-07-23 11:39:34      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:cin   while   pac   amp   height   names   namespace   str   case   

HDU 1069 Monkey and Banana 题解

纵有疾风起

题目大意

一堆科学家研究猩猩的智商,给他M种长方体,每种N个。然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉。

现在给你M种长方体,计算,最高能堆多高。要求位于上面的长方体的长要大于(注意不是大于等于)下面长方体的长,上面长方体的宽大于下面长方体的宽。

输入输出

开始一个数n,表示有多少种木块,木块的数量无限,然后接下来的n行,每行3个数,是木块的长宽高三个参量

输出使用这些在满足条件的情况下能够摆放的最大高度

解题思路

首先,我们严格令长>宽,可以想到一种木块有3种摆放方式,长、宽、高分别在下面。

对于摆放种类,我们可以使用dp动态规划来进行,看了其他博主写的博客,这个题和求最长递增子序列差不多(反过来想的,就是把塔给倒过来进行构造)。

#include <cstdio>
#include <iostream>
#include <algorithm>

using namespace std;
const int N=207;

struct note
{
    int l,w,h;
}cd[N];

int dp[N];

bool cmp( note cod1,note cod2 ) //按照长宽进行排序,大的在前
{
    if( cod1.l==cod2.l ) //长相同,宽 大的在前
        return cod1.w > cod2.w;
    return cod1.l > cod2.l;
}

int main()
{
    int n,len,t_num=1;
    int z1,z2,z3;
    while( scanf("%d", &n) && n )
    {
        len=0;
        for(int i=0; i<n; i++)
        {
            cin>>z1>>z2>>z3;
            cd[len].h=z1; cd[len].l=z2>z3?z2:z3; cd[len++].w=z2>z3?z3:z2;
            cd[len].h=z2; cd[len].l=z1>z3?z1:z3; cd[len++].w=z1>z3?z3:z1;
            cd[len].h=z3; cd[len].l=z1>z2?z1:z2; cd[len++].w=z1>z2?z2:z1;
        }
        sort(cd,cd+len,cmp);
        dp[0]=cd[0].h;
        int max_h, ans=0;
        for(int i=1; i<len; i++)
        {                        
            max_h=0;
            for(int j=0; j<i; j++ )  
            {
                if( cd[j].l>cd[i].l && cd[j].w>cd[i].w )
                    max_h = max_h>dp[j] ? max_h : dp[j];
            }
            dp[i]=cd[i].h+max_h;
            ans=max(ans, dp[i]); 
        }
        cout<<"Case "<<t_num++<<": maximum height = "<<ans<<endl;
    }
    return 0;
}

HDU 1069 Monkey and Banana dp 题解

标签:cin   while   pac   amp   height   names   namespace   str   case   

原文地址:https://www.cnblogs.com/alking1001/p/11230571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!