hdu(1069)——Monkey and Banana(LIS变形)
来源:互联网 发布:java电商项目简历 编辑:程序博客网 时间:2024/05/29 14:34
题意:
现在给你n个石块,然后它由坐标来表示(x,y,z)。但是它可以有不同的方法,也就是说它的三个坐标可以轮换着来的。
石块的数量不限,但是每次都必须保持上底面的长和宽严格递减,然后问你用这些石块所能拼成的最大高度是多少。
思路:
因为坐标有多种情况,所以我们可以把每次的情况都存下去。
这里需要注意的是,在保存的时候,我们要保持x的坐标是大于y的,这样方便我们之后的排序。
然后就直接求最长递减子序列就好了。
#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>#include<set>#include<map>#include<math.h>using namespace std;#define maxn 111#define inf 99999999int dp[maxn];struct node{int x,y,z,s;}a[maxn];bool cmp(node a,node b){if(a.x!=b.x) return a.x>b.x;else if(a.x==b.x) return a.y>b.y;}int main(){int n;int j=1;while(~scanf("%d",&n)){if(n==0) break;int t=0;for(int i=0;i<n;i++){int x,y,z;scanf("%d%d%d",&x,&y,&z);a[t].x=x>y?x:y; a[t].y=x>y?y:x;a[t].z=z; t++;a[t].x=y>z?y:z; a[t].y=y>z?z:y; a[t].z=x; t++;a[t].x=x>z?x:z; a[t].y=x>z?z:x; a[t].z=y;t++;}sort(a,a+t,cmp);memset(dp,0,sizeof(dp));dp[0]=a[0].z;int ans=-1;for(int i=0;i<t;i++){int res=0;for(int j=0;j<i;j++){if((a[i].x<a[j].x&&a[i].y<a[j].y)||(a[i].x<a[j].y&&a[i].y<a[j].x)){res=max(res,dp[j]);}}dp[i]=res+a[i].z;ans=max(ans,dp[i]);}printf("Case %d: maximum height = %d\n",j++,ans);}}
虽然题目简单,但是这道题也是由我自己想出来的呢,由易到难的练下去吧!
我相信我自己的努力,在不久的以后一定能尝到AC难题的喜悦!
@所有学习dp的人,加油!!!
0 0
- hdu(1069)——Monkey and Banana(LIS变形)
- HDU 1069 Monkey and Banana LIS变形
- hdu 1069 Monkey and Banana LIS变形
- HDU 1069 Monkey and Banana DP LIS
- 【DP|LIS】HDU-1069 Monkey and Banana
- HDU 1069 Monkey and Banana (动态规划+LIS)
- HDU1069-LIS变形-Monkey and Banana
- hdu 1069 —— Monkey and Banana
- HDU 1069 —— Monkey and Banana
- 【HDU 1069 】Monkey and Banana 【 求LIS的思想 DP 】
- Monkey and Banana LIS
- HDOJ 1069 Monkey and Banana (结构体LIS)
- HDOJ 1069 Monkey and Banana(LIS)
- hdu1069 Monkey and Banana(二维LIS)
- HDOJ1069 Monkey and Banana(DP,LIS)
- hdu 1069 Monkey and Banana (DP)
- HDU 1069 Monkey and Banana(DP)
- Monkey and Banana hdu(1069)
- 智能指针auto_ptr源码
- 如何用Cocoapods创建一个开源库
- VMware安装linux虚拟系统如何链接外网?
- C++_编写动态链接库
- tableview动态算一次高度的方法
- hdu(1069)——Monkey and Banana(LIS变形)
- zedboard 开启rz sz串口命令支持
- Interleaving String(*****)
- hdu 1142 A Walk Through the Forest(最短路)
- hdu1010Tempter of the Bone(dfs+奇偶剪枝)
- 黑马程序员——集合框架类(Collections、Arrays)
- uva 1343 IDA*
- leetcode-110:判断平衡二叉树 Java
- CSS选择器