动态规划: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;
}

相关文章推荐

HDU 1506 Largest Rectangle in a Histogram 动态规划

动态规划专题 单调栈类型题目 模拟过程 dp化简

hdu 1506 Largest Rectangle in a Histogram[动态规划]

#include using namespace std; ////题意:给出n个木板, 宽度为1 ,求最大高度的面积。 //暴力搜索的话超时, 改用DP求解 ////面积公式:sum = max(...

hdu 1506 Largest Rectangle in a Histogram(动态规划,很棒的优化)

这道题直接按照一般的思路去算是要超时的,必须经过一定程度的优化。 对于a[i],我们需要记录的是他之前和之后最大的连续的值比a[i]大的长度,如果每次都一个个去比对,数据大小是100000,时间复杂度...

hdu 1506 Largest Rectangle in a Histogram(DP)

Largest Rectangle in a Histogram Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/3276...
  • caduca
  • caduca
  • 2014年08月28日 23:31
  • 6959

HDU1506 Largest Rectangle in a Histogram (动规)

HDU1506 Largest Rectangle in a Histogram (动规) 对于每一块木板,Area=height[i]*(j-k+1) 其中,j...

HDU 1506 && POJ 2559 Largest Rectangle in a Histogram (单调队列)

题目链接:POJ 2559  Largest Rectangle in a Histogram  题目链接:HDU 1506  Largest Rectangle in a Histogram  题...

hdu1506Largest Rectangle in a Histogram

题目大意:在水平线上有n 题目链接

hdu1506Largest Rectangle in a Histogram

Problem Description A histogram is a polygon composed of a sequence of rectangles aligned at a co...

!HDU 1506 Largest Rectangle in a Histogram-dp|单调队列-(dp降低时间复杂度)

题意:有宽度相同高度不同的长方体挨着放在一起,求能构成的面积最大的长方体 分析:也是思维的转换。这题的主思路不是dp,dp只是起一个辅助作用。具体做法:枚举每个长方体,求以这个长方体的高度为高的最大的...

HDU-1506-Largest Rectangle in a Histogram【思维】【dp】【好题】

HDU-1506-Largest Rectangle in a Histogram
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态规划:E - Largest Rectangle in a Histogram(即HDU 1506)
举报原因:
原因补充:

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