Monkey and Banana(LIS最长上升子序列)
2015-08-14 20:30
405 查看
题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87125#problem/B
题意:
有n种砖,每种砖有无数个,猴子要通过堆砖来吃到香蕉,下面的砖的长宽分别大于它上面的砖的长宽,问最多能有多高。
案例:
input
1
10 20 30
2
6 8 10
5 5 5
7
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
5
31 41 59
26 53 58
97 93 23
84 62 64
33 83 27
0
output
Case 1: maximum height = 40
Case 2: maximum height = 21
Case 3: maximum height = 28
Case 4: maximum height = 342
思路分析:
每种砖的高度有三种可能,每次的长都大于宽,然后按从大到小的顺序排列,但要记住还有相等的情况,这个时候就要按宽来排。
找出每块砖处于最上面时会有多高。最后找出最大高度。
源代码如下:
题意:
有n种砖,每种砖有无数个,猴子要通过堆砖来吃到香蕉,下面的砖的长宽分别大于它上面的砖的长宽,问最多能有多高。
案例:
input
1
10 20 30
2
6 8 10
5 5 5
7
1 1 1
2 2 2
3 3 3
4 4 4
5 5 5
6 6 6
7 7 7
5
31 41 59
26 53 58
97 93 23
84 62 64
33 83 27
0
output
Case 1: maximum height = 40
Case 2: maximum height = 21
Case 3: maximum height = 28
Case 4: maximum height = 342
思路分析:
每种砖的高度有三种可能,每次的长都大于宽,然后按从大到小的顺序排列,但要记住还有相等的情况,这个时候就要按宽来排。
找出每块砖处于最上面时会有多高。最后找出最大高度。
源代码如下:
#include<iostream> #include<algorithm> #include<cstdio> using namespace std; struct node{ int l,w,h; }s[100]; bool cmp(const node a,const node b) { return a.l>b.l; if(a.l==b.l) return a.w>b.w; } int main() { int n,t=0,m,maxn,a,b,c,dp[100],i,j; while(scanf("%d",&n)&&n) { t++; m=0; maxn=0; for(i=0;i<n;i++) { scanf("%d%d%d",&a,&b,&c); s[m].l=max(a,b);s[m].w=min(a,b);s[m].h=c;m++; //每种砖的三种可能性 s[m].l=max(a,c);s[m].w=min(a,c);s[m].h=b;m++; s[m].l=max(c,b);s[m].w=min(c,b);s[m].h=a;m++; } sort(s,s+m,cmp); for(i=0;i<m;i++) { dp[i]=s[i].h; for(j=0;j<i;j++) if((s[j].l>s[i].l&&s[j].w>s[i].w)&&dp[j]+s[i].h>dp[i]) dp[i]=dp[j]+s[i].h; //每种砖放在最顶上的最大高度 if(dp[i]>maxn) maxn=dp[i]; } printf("Case %d: maximum height = %d\n",t,maxn); } return 0; }
相关文章推荐
- 推荐一些不错的计算机书籍
- javax.mail.AuthenticationFailedException
- 凸包 Graham扫描法
- 1. docker-maven
- openwrt 随机 ssid 随机 mac 脚本
- 奇偶线段树(区间更新)
- redis安装使用教程
- 浅谈iOS网络编程之一入门
- 杭电 3342 Legal or Not(拓扑排序)
- Codeforces Gym 100523E E - Gophers SET
- Python实现顺时钟回形矩阵
- 洛谷 P1541 乌龟棋
- LVS基于DR模型实现简单负载均衡集群和持久连接
- list 转换为 str
- Linux gcc 使用以及库文件的编译
- STM32的bootloader注意啥
- Git 多账号使用
- URAL 1774 Barber of the Army of Mages (最大流)
- test
- C# 通过串口发送短信