Largest Rectangle in a Histogram POJ - 2559
2024-09-06 19:51:21
很显然是单调栈
这里记录一种新的写法,这种写法基于递推,但是相比之下比单调栈更好写
#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<stack>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
//#define endl "\n"
#define inf 0x3f3f3f3f
#define me(a,b) memset(a,b,sizeof(a))
#define maxn 100000+5
long long n,a[maxn];
int l[maxn],r[maxn];
stack<long long> st;
long long mx;
void init()
{
mx=;
while(!st.empty())
st.pop();
}
int main()
{
while(cin>>n&&n){
init();
for(int i=;i<=n;i++)
scanf("%I64d",&a[i]),l[i]=r[i]=i;
a[]=;
for(int i=;i<=n;i++){
int now=i;
while(now>&&a[i]<=a[now-]) now=l[now-];
l[i]=now;
}
for(int i=n-;i;i--){
int now=i;
while(now<n&&a[i]<=a[now+]) now=r[now+];
r[i]=now;
}
for(int i=;i<=n;i++)
mx=max(mx,a[i]*(r[i]-l[i]+));
cout<<mx<<endl;
}
}
最新文章
- ASP.NET Core 中文文档 第三章 原理(12)托管
- C/C++实践笔记 007
- UIKit - scrollView缩放、滚动
- awk 命令
- Nginx系列3之Nginx+tomcat
- call()\apply()\bind()备忘录
- 【html/css】html/css命名规范
- ReentrantLock
- 将你的Asp.NET应用程序嵌入到SharePoint
- Android HttpClient get传递数组
- bind()
- freebsd安装和图形界面安装
- Springboot集成ECharts
- vue.js用select实现省,市,提交后,默认显示省,市信息
- vue, js 正则邮箱验证、匹配非法字符、匹配中文
- jqury的ajax
- 【DL.AI】《Structuring Machine Learning Projects》笔记
- Principal Component Analysis(PCA)
- php api接口校验规则示例
- wm_concat()函数
热门文章
- 基于 H5和 3D WebVR 的可视化虚拟现实培训系统
- SPH液面重构过程中的问题
- Flutter报错 Waiting for another flutter command to release the startup lock...
- 07-SpringMVC01
- [Redis-CentOS7]Redis集合操作(四)
- 物理机安装ESXI6.7提示No Network Adapters的解决方案
- java之时间戳处理
- 深入源码分析SpringMVC执行过程
- $.getJSON获取json数据失败
- 如何利用border书写三角形,建议考虑正方形