HDU 1069 Monkey and Banana DP LIS
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;
}
HDU 1069 Monkey and Banana DP LIS的更多相关文章
- HDU 1069 Monkey and Banana DP LIS变形题
http://acm.hdu.edu.cn/showproblem.php?pid=1069 意思就是给定n种箱子,每种箱子都有无限个,每种箱子都是有三个参数(x, y, z)来确定. 你可以选任意两 ...
- HDU 1069 monkey an banana DP LIS
Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uDescription 一组研究人员正在 ...
- HDU 1069 Monkey and Banana dp 题解
HDU 1069 Monkey and Banana 纵有疾风起 题目大意 一堆科学家研究猩猩的智商,给他M种长方体,每种N个.然后,将一个香蕉挂在屋顶,让猩猩通过 叠长方体来够到香蕉. 现在给你M种 ...
- 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(LIS最长上升子序列)
B - LIS Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descripti ...
- hdu(1069)——Monkey and Banana(LIS变形)
题意: 如今给你n个石块,然后它由坐标来表示(x,y,z).可是它能够有不同的方法,也就是说它的三个坐标能够轮换着来的. 石块的数量不限,可是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所 ...
- 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 ...
随机推荐
- Web开发中,使用表格来展示每个角色对应的权限
通过表格这种方式,来展示角色和权限之间的关系,挺好的.还有很多场景,都可以用这种方式. 角色权限表 权限 系统管理员 文章管理员 相册管理员 留言管理员 个人信息管理 查看个人信息 √ √ √ √ 编 ...
- POJ——T 2796 Feel Good
http://poj.org/problem?id=2796 Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 15375 ...
- View_01_LayoutInflater的原理、使用方法
View_01_LayoutInflater的原理.使用方法 本篇博客是郭神博客Android视图状态及重绘流程分析,带你一步步深入了解View(一)的读书笔记的笔记. LayoutInflater简 ...
- using the easy connect naming method 简单连接測试
一直都不明确sqlnet.ora中的NAMES.DIRECTORY_PATH= (TNSNAMES, EZCONNECT)是什么意思.今天看到一篇文档,就是登陆选用的方式.做一个測试: tnsname ...
- Linux网络编程--字节序
1 .谈到字节序,那么会有朋友问什么是字节序 非常easy:[比如一个16位的整数.由2个字节组成,8位为一字节,有的系统会将高字节放在内存低的地址上,有的则将低字节放在内存高的地址上,所以存在字节序 ...
- Harry Potter and the Goblet of Fire
书名:Harry Potter and the Goblet of Fire 作者:J.K. Rowling 篇幅: 752页 蓝思值:880L 用时: 17天 工具: 有道词典 [透析成果 ...
- 最值(min、max)与极值的理解
max(a,b)=−min(−a,−b) 如果 a≥b ⇒ max(a,b)=a,−a≤−b,⇒ 同理 min(a,b)=−max(−a,−b) 1. 最值 最小:不能更少,如果是整数关系的话,也即从 ...
- Cisco安全防护读书笔记之一Cisco系统设备协议漏洞
650) this.width=650;" onclick='window.open("http://blog.51cto.com/viewpic.php?refimg=" ...
- golang中new和make区别
golang 中有两个内存分配机制 :new和make,二者有明显区别. new:用来初始化一个对象,并且返回该对象的首地址.其自身是一个指针.可用于初始化任何类型 make:返回一个初始化的实例,返 ...
- angular 子组件与父组件通讯
1. 子组件app-sidebar.compnent.html (click)="goProject()"设置点击事件 <mat-list-item [routerLink] ...