HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana
纵有疾风起
题目大意
一堆科学家研究猩猩的智商,给他M种长方体,每种N个。然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉。
现在给你M种长方体,计算,最高能堆多高。要求位于上面的长方体的长要大于(注意不是大于等于)下面长方体的长,上面长方体的宽大于下面长方体的宽。
输入输出
开始一个数n,表示有多少种木块,木块的数量无限,然后接下来的n行,每行3个数,是木块的长宽高三个参量
输出使用这些在满足条件的情况下能够摆放的最大高度
解题思路
首先,我们严格令长>宽,可以想到一种木块有3种摆放方式,长、宽、高分别在下面。
对于摆放种类,我们可以使用dp动态规划来进行,看了其他博主写的博客,这个题和求最长递增子序列差不多(反过来想的,就是把塔给倒过来进行构造)。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=200;
struct node{
int l, w, h;
bool friend operator < (node a, node b)
{
if(a.h==b.h)
return a.w > b.w;
else
return a.l > b.l;
}
}a[maxn];
int dp[maxn];
int main()
{
int t=1, n;
while(scanf("%d", &n) && n!=0)
{
int len = 0, x, y, z;
for(int i=0; i<n; i++)
{
scanf("%d%d%d", &x, &y, &z);
a[len].h=x; a[len].l= y>z? y:z; a[len++].w= y>z? z:y;
a[len].h=y; a[len].l= x>z? x:z; a[len++].w= x>z? z:x;
a[len].h=z; a[len].l= x>y? x:y; a[len++].w= x>y? y:x;
}
sort(a, a+len);//排序是关键,最长递增子序列不用排序
for(int i=0; i<len; i++)
dp[i]=a[i].h; //初始值是每一个长方体的高
int max_h, ans=0;
for(int i=1; i<len; i++)
{
max_h=0;
for(int j=0; j<i; j++)
{
if(a[j].l > a[i].l && a[j].w > a[i].w)
{
max_h = max_h > dp[j] ? max_h : dp[j];
}
}
dp[i]=a[i].h+max_h;
ans=max(ans, dp[i]);
}
printf("Case %d: maximum height = %d\n", t++, ans);
}
return 0;
}
HDU 1069 Monkey and Banana dp 题解的更多相关文章
- HDU 1069 Monkey and Banana (DP)
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 1069 Monkey and Banana(DP 长方体堆放问题)
Monkey and Banana Problem Description A group of researchers are designing an experiment to test the ...
- HDU 1069 Monkey and Banana DP LIS变形题
http://acm.hdu.edu.cn/showproblem.php?pid=1069 意思就是给定n种箱子,每种箱子都有无限个,每种箱子都是有三个参数(x, y, z)来确定. 你可以选任意两 ...
- HDU 1069 Monkey and Banana DP LIS
http://acm.hdu.edu.cn/showproblem.php?pid=1069 题目大意 一群研究员在研究猴子的智商(T T禽兽啊,欺负猴子!!!),他们决定在房顶放一串香蕉,并且给猴子 ...
- HDU 1069 monkey an banana DP LIS
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription 一组研究人员正在 ...
- HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径)
HDU 1069 Monkey and Banana / ZOJ 1093 Monkey and Banana (最长路径) Description A group of researchers ar ...
- HDU 1069 Monkey and Banana(转换成LIS,做法很值得学习)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1069 Monkey and Banana Time Limit: 2000/1000 MS (Java ...
- HDU 1069—— Monkey and Banana——————【dp】
Monkey and Banana Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
- HDU 1069 Monkey and Banana 基础DP
题目链接:Monkey and Banana 大意:给出n种箱子的长宽高.每种不限个数.可以堆叠.询问可以达到的最高高度是多少. 要求两个箱子堆叠的时候叠加的面.上面的面的两维长度都严格小于下面的. ...
随机推荐
- 如何解决Bootstrap中分页不能居中的问题
尝试过1.text-align:center居中:2.margin:0 auto; 3.display: flex;justify-content: center;都不行 解决: 在外层多加一个nav ...
- 【SaltStack官方版】—— EVENTS & REACTOR指南
EVENTS & REACTOR Event System Event Bus Event types Salt Master Events Authentication events Sta ...
- 【leetcode】1147. Longest Chunked Palindrome Decomposition
题目如下: Return the largest possible k such that there exists a_1, a_2, ..., a_k such that: Each a_i is ...
- LeetCode--006--Z 字形变换(python)
将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: 之后,你的输出需要从左 ...
- jzoj6404. 【NOIP2019模拟11.04】B
题目描述 Description Input 从文件b.in中读入数据. 第丬行三个正整数 n, m, K. 接下来 n 行每行 m 个正整数, 表示矩阵A. Output 输出到文件b.out中. ...
- Bugku web 计算器
计算器 打开网页,想输入正确的计算结果发现只输进去一位数??? 遇事不决先F12看一眼源码,发现flag
- CSS中的自适应单位vw、vh、vmin、vmax
1.vw.vh.vmin.vmax各单位的意义 上面的自适应单位可以统称为视口单位. 可以先了解一下视口指的是什么? 在PC端,视口指的是在PC端,指的是浏览器的可视区域:而在移动端,它涉及3个视口: ...
- (12)QT中搭建opencv开发环境
只需要在项目工程文件pro中添加上: INCLUDEPATH += G:/opencv/build/include \ G:/opencv/build/include/opencv \ G:/open ...
- oracle 如何更改密码的hash
如何迁移oracle user的密码到新的环境,一下列出了方法: select name,spare4||';'||password pwd from sys.user$ where name = ' ...
- weui 框架
weui是一个框架,但是官方并没有提供文档: 所以我们需要在github上来通过案例来了解他的用法 一般做列表,左边的图片要么60x60,要么80x80用的比较多 weui是一个小巧的框架,所以带来的 ...