杭电oj 1069 Monkey and Banana 最长递增子序列
Monkey and Banana
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 6866 Accepted Submission(s):
3516
test the IQ of a monkey. They will hang a banana at the roof of a building, and
at the mean time, provide the monkey with some blocks. If the monkey is clever
enough, it shall be able to reach the banana by placing one block on the top
another to build a tower and climb up to get its favorite food.
The
researchers have n types of blocks, and an unlimited supply of blocks of each
type. Each type-i block was a rectangular solid with linear dimensions (xi, yi,
zi). A block could be reoriented so that any two of its three dimensions
determined the dimensions of the base and the other dimension was the height.
They want to make sure that the tallest tower possible by stacking
blocks can reach the roof. The problem is that, in building a tower, one block
could only be placed on top of another block as long as the two base dimensions
of the upper block were both strictly smaller than the corresponding base
dimensions of the lower block because there has to be some space for the monkey
to step on. This meant, for example, that blocks oriented to have equal-sized
bases couldn't be stacked.
Your job is to write a program that
determines the height of the tallest tower the monkey can build with a given set
of blocks.
first line of each test case contains an integer n,
representing the number
of different blocks in the following data set. The maximum value for n is
30.
Each of the next n lines contains three integers representing the values
xi, yi and zi.
Input is terminated by a value of zero (0) for n.
number (they are numbered sequentially starting from 1) and the height of the
tallest possible tower in the format "Case case: maximum height =
height".
#include <iostream>
#include <algorithm>
using namespace std; typedef struct rectangular{
int x,y,z;
}R;
R r[];
int k;
bool cmp(R a,R b)
{
if(a.x == b.x)
return a.y<b.y;
return a.x<b.x;
}
int dp()
{
int i, j;
int dp[];
sort(r,r+k,cmp);
int maxheight = ;
for(i=; i<k; i++)
{
dp[i] = r[i].z;
for(j=;j<i; j++)
if(r[i].x>r[j].x && r[i].y>r[j].y)
if(dp[j]+r[i].z > dp[i])
dp[i] = dp[j]+r[i].z;
if(maxheight < dp[i])
maxheight = dp[i];
}
return maxheight;
}
int main()
{
int n, i, cas=;
int x, y, z;
while(cin>>n && n)
{
k = ;
for(i=; i<n; i++)
{
cin>>x>>y>>z;
r[k].x = max(x,y);
r[k].y = min(x,y);
r[k++].z = z;
r[k].x = max(x,z);
r[k].y = min(x,z);
r[k++].z = y;
r[k].x = max(y,z);
r[k].y = min(y,z);
r[k++].z = x;
}
cout<<"Case "<<cas++<<": maximum height = "<<dp()<<endl;
}
return ;
}
杭电oj 1069 Monkey and Banana 最长递增子序列的更多相关文章
- HDU 1069 Monkey and Banana(最长递减子序列)
题目链接 题意:摞长方体,给定长方体的长宽高,个数无限制,可随意翻转,要求下面的长方体的长和宽都大于上面的,都不能相等,问最多能摞多高. 题解:个数无限,其实每种形态最多就用一次,把每种形态都单独算一 ...
- C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~
暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...
- 杭电oj 2095 & 异或^符号在C/C++中的使用
异或^符号,在平时的学习时可能遇到的不多,不过有时使用得当可以发挥意想不到的结果. 值得注意的是,异或运算是建立在二进制基础上的,所有运算过程都是按位异或(即相同为0,不同为1,也称模二加),得到最终 ...
- 用python爬取杭电oj的数据
暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...
- 杭电oj 4004---The Frog Games java解法
import java.util.Arrays; import java.util.Scanner; //杭电oj 4004 //解题思路:利用二分法查找,即先选取跳跃距离的区间,从最大到最小, // ...
- 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 ...
- 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)
今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...
- HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个.然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉. 现在给你M种 ...
随机推荐
- 广播变量、累加器、collect
广播变量.累加器.collect spark集群由两类集群构成:一个驱动程序,多个执行程序. 1.广播变量 broadcast 广播变量为只读变量,它由运行sparkContext的驱动程序创建后发送 ...
- iOS下的 Fixed + Input 调用键盘的时候fixed无效问题解决方案
做touchweb开发的时候,做头疼的是,电脑上面时候好的,有些手机上面也是好的,个别手机和浏览器出现问题,对于这些,只能慢慢调试,找问题. 今天说一下比较老的IOS的问题,那就是"iOS下 ...
- 1071. Speech Patterns (25)
People often have a preference among synonyms of the same word. For example, some may prefer "t ...
- [LintCode] Move Zeroes 移动零
Given an array nums, write a function to move all 0's to the end of it while maintaining the relativ ...
- 序列化,反序列化,模拟ATM机
package com.bank.unionpay; //银行卡的接口 public interface I_yinhangka { //抽象方法 //public abstract默认修饰抽象的 p ...
- Odoo中的Javascript单元测试
前端页面利用QUnit进行单元测试,本文参考官方文档:https://www.odoo.com/documentation/8.0/reference/javascript.html 访问/web/t ...
- CentOS默认开放的本地端口范围
系统本地开放端口的范围:(默认30000多到60000多) [root@linux2 ~]# vim /etc/sysctl.conf net.ipv4.ip_local_port_range = 1 ...
- sprin加载顺序
spring加载有个比较有意思的问题,这里片很不错的文章 http://guoliangqi.iteye.com/blog/632697
- window dos命名
dos命令从c盘进入d盘c:\>d:敲回车 >dir 查看文件夹中文件运行java程序,最好先进入文件夹:然后javac Hello.javajava Hello
- 【iCore3 双核心板_FPGA】实验十七:基于I2C总线的ARM与FPGA通信实验
实验指导书及代码包下载: http://pan.baidu.com/s/1dFqddMp iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...