http://acm.hdu.edu.cn/showproblem.php?pid=1506

题意:给出n个矩形的高度,每个矩形的宽都为1,求相邻的矩形能组合成的最大的矩形的面积。

思路:求出比第i个矩形大的最左边的矩形的位置 l[i], 及比第i个矩形大的最右边的矩形的位置 r[i], 则第i个矩形的面积 s = (r[i]-l[i]+1)*hign[i]。

如果第i-1个矩形比第i个矩形大,则 l[i] 必定在 l[i-1]的 左边,同理,r[i]必定在 r[i+1]的右边。

 #include <stdio.h>
#include <string.h>
#include <algorithm>
#define LL __int64
const int N=;
using namespace std;
LL high[N],l[N],r[N];
int main()
{
int n;
while(~scanf("%d",&n)&&n)
{
for (int i = ; i <= n; i++)
scanf("%I64d",&high[i]);
for (int i = ; i <= n; i++)
{
int pos = i;
while(pos > && high[pos-] >= high[i])
{
pos = l[pos-];//如果第i个矩形左边的矩形(pos-1)比i高,
//则pos移动到l[pos-1](即比第pos-1个矩形高的最左边的矩形的位置)
}
l[i] = pos;//l[i]表示比第i个矩形连续高的最左边的矩形位置
}
for (int i = n; i >= ; --i)
{
int pos = i;
while(pos < n && high[i] <= high[pos+])
{
pos = r[pos+];
}
r[i] = pos;//表示比第i个矩形连续高的最右边的矩形位置
}
LL maxn = ;
for (int i = ; i <= n; i++)
{
maxn = max((r[i]-l[i]+)*high[i],maxn);
}
printf("%I64d\n",maxn);
}
return ;
}

同类型的题:

http://acm.hdu.edu.cn/showproblem.php?pid=1505

 #include <stdio.h>
#include <algorithm>
#include <string.h>
#define LL __int64
const int N=;
using namespace std;
LL l[N],r[N],high[N]; LL max_area(int m)
{
for (int i = ; i <= m; i++)
{
if(i > && high[i] <= high[i-])
{
l[i] = l[i-];
}
else
l[i] = i;
}
for (int i = m; i >= ; i--)
{ if(i < m && high[i] <= high[i+])
{
r[i] = r[i+];
}
else
r[i] = i;
}
LL maxn = ;
for (int i = ; i <= m; i++)
{
maxn = max((r[i]-l[i]+)*high[i],maxn);
}
return maxn;
}
int main()
{
int t;
char s[];
scanf("%d",&t);
while(t--)
{
int n,m;
LL ans = ;
scanf("%d %d",&n,&m);
memset(high,,sizeof(high));
for (int i = ; i <= n; i++)
{
for (int j = ; j <= m; j++)
{
scanf("%s",s);
if (s[]=='F')
high[j]++;
else
high[j] = ;
}
ans = max(max_area(m),ans);//第一行到第i行最大的面积
}
printf("%I64d\n",ans*);
}
return ;
}

Largest Rectangle in a Histogram(dp)的更多相关文章

  1. hdu---1506(Largest Rectangle in a Histogram/dp最大子矩阵)

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. HDU 1506 Largest Rectangle in a Histogram(DP)

    Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  3. BNUOJ-15505 Largest Rectangle in a Histogram DP

    题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=15505 每个h[i]维护两个值l[i]和r[i],分别表示大于h[i]的左边最远距离和小于 ...

  4. HDU1506 ( Largest Rectangle in a Histogram ) [dp]

    近期情绪太不稳定了.可能是由于在找实习这个过程碰壁了吧.第一次面试就跪了,可能是我面的是一个新公司,制度不完好,我感觉整个面试过程全然不沾编程,我面试的还是软件开发-后来我同学面试的时候.说是有一道数 ...

  5. hdu 1506 Largest Rectangle in a Histogram ((dp求最大子矩阵))

    # include <stdio.h> # include <algorithm> # include <iostream> # include <math. ...

  6. Largest Rectangle in a Histogram(DP)

    Largest Rectangle in a Histogram Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K ...

  7. HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)

    E - Largest Rectangle in a Histogram Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  8. POJ 2559 Largest Rectangle in a Histogram (单调栈或者dp)

    Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 15831 ...

  9. NYOJ-258/POJ-2559/HDU-1506 Largest Rectangle in a Histogram,最大长方形,dp或者单调队列!

                                         Largest Rectangle in a Histogram 这么经典的题硬是等今天碰到了原题现场懵逼两小时才会去补题.. ...

随机推荐

  1. sratookit

    sratookit 下载后解压 tar -zxvf sratoolkit.2.8.2-1-ubuntu64.tar.gz 移动到专门安装生物信息软件的目录下 mv sratoolkit.2.8.2-1 ...

  2. Redis 之仿微博demo

    一.用户注册登录 include './header.php'; include './function.php'; $username = p('username'); $password = p( ...

  3. [系统资源攻略]CPU使用率和负载

    我们在搞性能测试的时候,对后台服务器的CPU利用率监控是一个常用的手段.服务器的CPU利用率高,则表明服务器很繁忙.如果前台响应时间越来越大,而后台CPU利用率始终上不去,说明在某个地方有瓶颈了,系统 ...

  4. [LUOGU] 1108 低价购买

    统计本质不同的\(LIS\)个数. 因为本题要求的是\(N^2\)级别的算法,就直接暴力统计\(LIS\)的个数了 然后统计方案数的话加入发现有之间有一个值,以它为结尾的\(LIS\)长度和当前的相等 ...

  5. Huawei-R&S-网络工程师实验笔记20190607-STP生成树协议(基本配置、桥优先级、根桥选举、根端口、路径开销、边缘端口)

    >Huawei-R&S-网络工程师实验笔记20190607-STP生成树协议(基本配置.桥优先级.根桥选举.根端口.路径开销.边缘端口) >>实验开始,先上拓扑图参考: &l ...

  6. 【codeforces 801D】Volatile Kite

    [题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何 ...

  7. Haybale Guessing

    Haybale Guessing Time Limit: 1000MS   Memory Limit: 65536K       Description The cows, who always ha ...

  8. 一个手机图表(echarts)折线图的封装

    //定义一组颜色值,按顺序取出 var colorGroup = ["#6ca3c4","#76bfa3","#ea8f7a"," ...

  9. dba 和 rdba 转载

    一.  DB(Data block)   A data block is the smallest unit of storage in an Oracle database. Every datab ...

  10. Intellij Idea 13:导入openfire源代码

    网络上已经有篇关于openfire导入到Intellij Idea的文章(http://www.th7.cn/Program/java/201404/187018.shtml),不过在我导入的过程中, ...