SUST OJ 1675: Fehead的项目(单调栈)
1675: Fehead的项目
时间限制: 1 Sec 内存限制: 128 MB
提交: 41 解决: 27
[提交][状态][讨论版]
题目描述
Fehead俱乐部接手了一个项目,为了统计数据,他们把这个项目做成了一个柱形统计图。对于这个柱形统计图,它的每个项目的宽度是1, 高度和具体问题有关。现在身为Fehead铁杆粉丝的你,帮忙编程求出在这个柱形图中的最大面积的矩形。
例如对于这三个矩形,阴影部分面积最大。EIP1OGVM0(YD132.png)
输入
有多组测试,每一组测试第一个数为N1<=N<=100000,代表N个矩形,接下来N个数分别代表这N个矩形的高度h。0<=hi<=1000000000。N为0结束测试。
输出
每一组测试输出能组成的最大矩形面积。
样例输入
7 1 1 4 6 1 2 3
4 2000 2000 2000 2000
0
样例输出
8
8000
用单调栈计算出每个数作为最小数向左和向右能延伸的最长距离。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1e6+10;
ll a[maxn],l[maxn],r[maxn];
ll st[maxn],top;
int main()
{
ll n,i;
while(cin>>n&&n)
{
for(i=1;i<=n;i++) cin>>a[i];
a[++n]=-1;
top=0;
for(i=1;i<=n;i++)
{
l[i]=r[i]=i;
while(top&&a[st[top]]>a[i])
{
l[i]=l[st[top]];
r[st[top]]=i-1;
top-=1;
}
if(top&&a[st[top]]==a[i]) l[i]=l[st[top]];
top+=1;
st[top]=i;
}
ll res=0;
for(i=1;i<n;i++)
{
res=max(res,(r[i]-l[i]+1)*a[i]);
}
cout<<res<<endl;
}
return 0;
}
SUST OJ 1675: Fehead的项目(单调栈)的更多相关文章
- 51nod 1102 面积最大的矩形 && 新疆大学OJ 1387: B.HUAWEI's billboard 【单调栈】+【拼凑段】(o(n) 或 o(nlog(n))
题面1:  题面2:  两道题除了数据范围不同,没有任何差异,两道题都可以o(n)(单调栈),o(nlog(n))(我自己的做法)解决. 解题思路1:(单调栈) 对于每个点找到右边第一个比它小的位 ...
- 翻转长方形 (不知名oj中一道个人私题)--单调栈维护最大子矩形
怎么分析这道题呢? 首先 ,我们注意到一点: 不管怎么操作,任意一个2*2方格中的 "#"个数的奇偶性是不变的. 所以,如果一个2*2方格中有奇数个"#",这个 ...
- poj 2559 Largest Rectangle in a Histogram (单调栈)
http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 6 ...
- BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]
1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 8748 Solved: 3835[Submi ...
- BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]
4453: cys就是要拿英魂! Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 90 Solved: 46[Submit][Status][Discu ...
- BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]
3238: [Ahoi2013]差异 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 2326 Solved: 1054[Submit][Status ...
- poj 2559 Largest Rectangle in a Histogram - 单调栈
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19782 ...
- bzoj1510: [POI2006]Kra-The Disks(单调栈)
这道题可以O(n)解决,用二分还更慢一点 维护一个单调栈,模拟掉盘子的过程就行了 #include<stdio.h> #include<string.h> #include&l ...
- BZOJ1057[ZJOI2007]棋盘制作 [单调栈]
题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...
随机推荐
- Linux下Tomcat启动设置debug模式启动
原文: https://blog.csdn.net/li295214001/article/details/42077247 https://blog.csdn.net/jackie_xiaonan/ ...
- angular编译机制
转载https://segmentfault.com/a/1190000011562077 Angular编译机制 前言 http://www.cnblogs.com/ztwBlog/p/620975 ...
- Java JDK5新特性-静态导入
2017-10-31 00:10:50 静态导入格式:import static 包名 ...类名.方法名: 也就说可以直接导入到方法名. 注意: 方法必须是静态的 如果有多个同名的静态方法,容易不知 ...
- Java读取xml
首先将xml的格式展示出来,如下 <?xml version="1.0"?> <configuration> <connectionStrings n ...
- [.NET开发] NPOI导出
//导出全部 expertPara = GetExpetPara(); expertPara.BeginIndex = pager.CurrentPageIndex; expertPara.EndIn ...
- C#特征备忘
[assembly:System.CLSCompliant(true)]----利用CLSCompliant属性,可以把程序集标记为与CLS兼容,但仍可以将个别方法的CLSCompliant值设为fa ...
- English trip -- Review Unit6 Time 时间
It's at seven o'clock 整点 7点整 It's at half past seven or It's seven-thirty7点30 It's at seven fi ...
- Confluence 6 启用嵌套用户组
一些目录服务器能够允许你在一个组中定义另外一个组.在这种结构下的用户组称为用户组嵌套.嵌套组的配置能够让子用户组继承上级用户组的权限,使系统的权限配置变得简单. 这个页面描述了 Confluence ...
- Tree Cutting (Hard Version) CodeForces - 1118F2 (树形DP,计数)
大意:给定树, 每个点有颜色, 一个合法的边集要满足删除这些边后, 每个连通块内颜色仅有一种, 求所有合法边集的个数 $f[x][0/1]$表示子树$x$中是否还有与$x$连通的颜色 对于每种颜色已经 ...
- Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'e ...