hdu1069 最长下降子列
来源:互联网 发布:433m无线模块数据手册 编辑:程序博客网 时间:2024/06/17 01:18
17年4月20
/*******c0de*******/
我们很容易将此问题与最大下降子列问题联系起来,即求满足要求的最大高度。
首先要明白:
在原始的最大子列问题中 给出的数列即为要求的顺序(即这个子列肯定是自前向后找)
也就是说,后面的数只能找前面比它大的数,而不能找后面比它打的书
但此问题,给出的木板长短是任意的,因此我们先必须对其进行排序,使得排序之后的木板(对应原始问题的数列)满足后面的木板只能放在前面木板的上方,而不能放在后面木板的上方
解决这个问题相对就容易了,我们只需要将所有情况的木板按照其宽(或者长这里自己规定即可) 按从大到小的顺序排列,即可满足前面的木板绝对不可以放在后面木板的上方,此时将问题已经转化为了原始问题,套用模版即可。
代码如下
#include <iostream>
#include<cstdio>
#include<algorithm>
using namespace std;//只需要保证前面的不会放在后面的上面即可。 后面的可能会放在前面上面 转化为最大下降子序列。
struct no
{
int a;//长
int b;//宽
int h;//高
int l;//从第一个木板到此木板的最大高度
}num[1000];
bool cmp(no x,no y)//先按照行/列的顺序降序排列,保证前面不能放在后面,如果有行一样的,不用管,因为他们之间不存在相互放置的关系。
{
return x.a > y.a;
}
int main()
{
int n;
int p = 0;
while(scanf("%d",&n)!=EOF&&n)
{
int i;
int x,y,z;
int k = -1;
for(i = 0; i < n; i++)//一共有六种情况 将它们全部存储
{
scanf("%d%d%d",&x, &y, &z);
num[++k].h = x, num[k].a = y, num[k].b = z, num[k].l = x;
num[++k].h = x, num[k].a = z, num[k].b = y, num[k].l = x;
num[++k].h = y, num[k].a = z, num[k].b = x, num[k].l = y;
num[++k].h = y, num[k].a = x, num[k].b = z, num[k].l = y;
num[++k].h = z, num[k].a = x, num[k].b = y, num[k].l = z;
num[++k].h = z, num[k].a = y, num[k].b = x, num[k].l = z;
}
sort(num,num + k + 1,cmp);//排序
int j;
for(i = 0; i <= k; i++)
{
for(j = 0; j < i; j++)
{
if((num[j].a > num[i].a&&num[j].b > num[i].b)&&(num[j].l + num[i].h > num[i].l))
num[i].l = num[j].l + num[i].h;
}
}
int maxn = -1;//找最大的高度
for(i = 0; i <= k; i++)
{
if(num[i].l > maxn) maxn = num[i].l;
}
printf("Case %d: maximum height = %d\n",++p,maxn);
}
return 0;
}
- hdu1069 最长下降子列
- nlgn求最长不下降子列
- (博客搬迁)hdu1069 Monkey and Banana(最长不下降子序列)
- HDU1069 最长单调子序列变形
- hdu1069-最长连续上升子序列
- hdu1069 最长上升子序列变形
- 最长下降子序列
- 最长下降子序列
- 最长下降子序列
- hdu1069!求最长上升自序列的和
- 最长不下降子序列
- poj1887(最长下降子序列)
- 最长上升下降子序列
- 最长不下降子序列
- 最长不下降子序列
- 最长不下降子序列
- POJ1887 最长下降子序列
- 最长不下降子序列
- Android录制小视频(一)
- android6.0,百度地图运行时权限。
- springmvc4之<mvc:exclude-mapping path="" />拦截配置
- tomcat核心概念及应用
- 常见的八种导致 APP 内存泄漏的问题
- hdu1069 最长下降子列
- WindowManager 系统悬浮窗弹出
- java把字符串转化成公式计算
- 第三次面试
- 数据库表设计——转盘抽奖功能
- 动态规划:数字组合
- 查询
- mxnet系列之 自定义目标函数
- 数据库