标签:des style http io os ar for sp div

7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0
8 4000
思路:以每一行的高度为高,看左右分别可以延伸到哪里,算出面积求优解
代码:
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
#define N 100005
__int64 h[N],le[N],ri[N];
int main()
{
__int64 n,i;
while(scanf("%I64d",&n),n)
{
for(i=1;i<=n;i++)
{
scanf("%I64d",&h[i]);
le[i]=ri[i]=i;
}
for(i=1;i<=n;i++)
while(le[i]>1&&h[le[i]-1]>=h[i])
le[i]=le[le[i]-1];
for(i=n;i>=1;i--)
while(ri[i]<n&&h[ri[i]+1]>=h[i])
ri[i]=ri[ri[i]+1];
__int64 ans=0;
for(i=1;i<=n;i++)
{
__int64 temp=((ri[i]-le[i]+1)*h[i]);
if(temp>ans)
ans=temp;
}
printf("%I64d\n",ans);
}
return 0;
}
HDU 1056 Largest Rectangle in a Histogram(dp)(求最大的矩形面积)
标签:des style http io os ar for sp div
原文地址:http://blog.csdn.net/u014737310/article/details/40190183