动态规划:E - Largest Rectangle in a Histogram(即HDU 1506)

原创 2013年12月03日 00:12:19
题意就是求出最大矩形的面积。开始觉得好像不需要用DP,然后就直接搞了就T了;然后又优化一下,看看能不能用记忆递归搞定,但是记忆的时候实行不了也以失败告终……委屈后来还是又回到了DP上,感觉这题好像跟DP没关系啊,搞了好久不太会,后面参考了下别人的,才知道向左搜索的时候dpl[i]=dpl[dpl[i]-1]这样做,这就是DP,我好晕……这也叫DP啊!!!真不理解,这不就是一般的解法嘛!!太晕了……刚才和队友们聊天的时候,队友说生活要用DP的思想啊……哭太神了!
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#include<stack>
#include<ctime>
#include<cstdlib>
#define mem(a,b) memset(a,b,sizeof(a))
typedef long long ll;
using namespace std;
int h[100005],dpl[100005],dpr[100005];
int main()
{
    int n,i,j;
    while(scanf("%d",&n)&&n)
    {
        for(i=1; i<=n; i++)
            scanf("%d",&h[i]);
        for(i=1,j=n; i<=n,j>=1; i++,j--)
        {
            dpl[i]=i;
            dpr[j]=j;
            while(dpl[i]>1&&h[dpl[i]-1]>=h[i])
                dpl[i]=dpl[dpl[i]-1];
            while(dpr[j]<n&&h[dpr[j]+1]>=h[j])
                dpr[j]=dpr[dpr[j]+1];
        }
        ll m=-1;
        for(i=1; i<=n; i++)
            m=max(m,(ll)h[i]*(dpr[i]-dpl[i]+1));
        cout<<m<<endl;
    }
    return 0;
}

寻找直方图中的最大矩形 Largest Rectangle in Histogram

题目:Given n non-negative integers representing the histogram's bar height where the width of each ba...
  • luckyjoy521
  • luckyjoy521
  • 2014年02月20日 22:18
  • 1030

HDU 1506 单调栈

题目链接:点击打开链接            单调栈就是栈里的元素具有单调性,包括单调递增栈和单调递减栈。其实单调递增(减)栈就是每次碰到比栈顶元素小(大)的就出栈,保持栈里元素的单调性。 应...
  • lov_vol
  • lov_vol
  • 2016年02月01日 22:51
  • 239

84 Largest Rectangle in Histogram(直方图中最大的矩形)

Given n non-negative integers representing the histogram’s bar height where the width of each bar is...
  • NichChen
  • NichChen
  • 2017年07月26日 17:32
  • 126

【直方图的最大面积】Largest Rectangle in Histogram

Given n non-negative integers representing the histogram's bar height where the width of each bar is...
  • wjz748305545
  • wjz748305545
  • 2014年04月05日 17:30
  • 524

Largest Rectangle in Histogram 一排矩形中的最大的面积

Largest Rectangle in Histogram Given n non-negative integers representing the histogram's b...
  • u012605629
  • u012605629
  • 2015年09月23日 15:44
  • 252

hdu 1506(nyoj 258)Largest Rectangle in a Histogram(最大长方形(二))(单调栈)

hdu题目链接:Largest Rectangle in a Histogram nyoj题目链接:最大长方形(二)思路一: 用三个数组记录,height[]记录高度,left[]记录当前高度延伸...
  • blessLZH0108
  • blessLZH0108
  • 2017年04月03日 18:45
  • 352

Largest Rectangle in a Histogram(动态规划找最大矩形面积)

Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3276...
  • baidu_23955875
  • baidu_23955875
  • 2015年06月06日 20:14
  • 222

Largest Rectangle in Histogram(在柱形图中画出最大矩形)

Given n non-negative integers representing the histogram's bar height where the width of each bar is...
  • huzhigenlaohu
  • huzhigenlaohu
  • 2016年08月18日 11:20
  • 242

LeetCode | Largest Rectangle in Histogram(直方图围城的最大矩形面积)

Given n non-negative integers representing the histogram's bar height where the width of each bar is...
  • a45872055555
  • a45872055555
  • 2014年08月12日 20:05
  • 750

HDU 2819 Swap (行列匹配+输出解)

题意:能否使对角线上全是1 ,这个简单直接按行列匹配,难在路径的输出,我们知道X,Y左右匹配完了之后,不一定是1–1,2–2,3–3……这样的匹配。可能是1–3,2–1,3–2,我们要把他们交换成前一...
  • u013167299
  • u013167299
  • 2015年08月24日 22:16
  • 574
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划:E - Largest Rectangle in a Histogram(即HDU 1506)
举报原因:
原因补充:

(最多只允许输入30个字)