ZOJ1985 POJ2259 HDU1506 Largest Rectangle in a Histogram
2012-04-14 20:19
344 查看
如果穷举的话,肯定会超时的。
对于left_array[x],它记录以array[x]为最低长度的左边界坐标;right_array[x]它记录了以array[x]为最低长度的右边界坐标。一开始都分别等于x;
对于left_array[x],它记录以array[x]为最低长度的左边界坐标;right_array[x]它记录了以array[x]为最低长度的右边界坐标。一开始都分别等于x;
#ifdef _MSC_VER #define DEBUG #define _CRT_SECURE_NO_DEPRECATE #endif #include <fstream> #include <stdio.h> #define MAX 100010 using namespace std; int left_array[MAX],right_array[MAX]; long long array[MAX]; int main(void) { #ifdef DEBUG freopen("../stdin.txt","r",stdin); freopen("../stdout.txt","w",stdout); #endif int n,ncase=1; // scanf("%d",&ncase); while(~scanf("%d",&n) && n) { array[0]=left_array[0]=0ll; for(int i=1;i<=n;++i) { scanf("%lld",&array[i]); left_array[i]=i; right_array[i]=i; } array[n+1]=right_array[n+1]=0ll; long long ans=0; for(int i=1;i<=n;++i) { int x=i; while(x && array[x-1]>=array[i]) x=left_array[x-1]; left_array[i]=x; } for(int i=n;i>0;--i) { int x=i; while(x && array[x+1]>=array[i]) x=right_array[x+1]; right_array[i]=x; } for(int i=1;i<=n;++i) ans=max((right_array[i]-left_array[i]+1)*array[i],ans); printf("%lld\n",ans); } return 0; }
相关文章推荐
- POJ2559 HDU1506 ZOJ1985 Largest Rectangle in a Histogram【堆栈+水题】
- ZOJ 1985: Largest Rectangle in a Histogram
- zoj1985 Largest Rectangle in a Histogram(DP)
- zoj 1985 - Largest Rectangle in a Histogram
- ZOJ 1985 Largest Rectangle in a Histogram 迭代... 贪心
- ZOJ 1985 Largest Rectangle in a Histogram(刷广告)2010辽宁省赛
- ZOJ 1985 Largest Rectangle in a Histogram
- HDU1506 Largest Rectangle in a Histogram(水DP)
- HDU1506 ( Largest Rectangle in a Histogram ) [dp]
- hdu1506 & pku2559 Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram(单调栈)
- 【单调栈】hdu1506 Largest Rectangle in a Histogram
- 【DP】 hdu1506 Largest Rectangle in a Histogram
- hdu1506---Largest Rectangle in a Histogram(单调栈)
- HDU1506--Largest Rectangle in a Histogram
- hdu1506 Largest Rectangle in a Histogram (单调栈)
- HDU1506--Largest Rectangle in a Histogram (动态规划)
- hdu1506 Largest Rectangle in a Histogram (笛卡尔树)
- HDU1506_Largest Rectangle in a Histogram
- HDU1506: Largest Rectangle in a Histogram(最大子矩阵,好题动态优化左右边界)