//单调栈
//思路很好的
#include<cstdio>
#include<iostream>
using namespace std;
const int mn=100005;
int n,h[mn],st[mn],top,l[mn],r[mn];
int main(){
while(~scanf("%d",&n)&&n)
{
top=0;
for(int i=0;i<n;++i)
{
//往左边找小于等于h[i]的坐标的最大值
scanf("%d",h+i);
while(top>0&&h[st[top-1]]>=h[i]) --top;
l[i]=top==0?0:st[top-1]+1;
st[top++]=i;
}
top=0;
for(int i=n-1;i>=0;--i)
{
//往右边找大于h[i]的坐标的最小值
poj2559(单调栈)最大矩形面积
最新推荐文章于 2021-09-05 16:26:19 发布
本文介绍如何利用单调栈解决POJ2559题目中的最大矩形面积问题。通过分析柱状图,利用单调栈找到每个柱子能构成的最大矩形,并最终找出全局最大的矩形面积。
摘要由CSDN通过智能技术生成