1675: Fehead的项目

时间限制: 1 Sec  内存限制: 128 MB
提交: 41  解决: 27
[提交][状态][讨论版]

题目描述

Fehead俱乐部接手了一个项目,为了统计数据,他们把这个项目做成了一个柱形统计图。对于这个柱形统计图,它的每个项目的宽度是1, 高度和具体问题有关。现在身为Fehead铁杆粉丝的你,帮忙编程求出在这个柱形图中的最大面积的矩形。

例如对于这三个矩形,阴影部分面积最大。

输入

有多组测试,每一组测试第一个数为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的项目(单调栈)的更多相关文章

  1. 51nod 1102 面积最大的矩形 && 新疆大学OJ 1387: B.HUAWEI's billboard 【单调栈】+【拼凑段】(o(n) 或 o(nlog(n))

    题面1:  题面2:  两道题除了数据范围不同,没有任何差异,两道题都可以o(n)(单调栈),o(nlog(n))(我自己的做法)解决. 解题思路1:(单调栈) 对于每个点找到右边第一个比它小的位 ...

  2. 翻转长方形 (不知名oj中一道个人私题)--单调栈维护最大子矩形

    怎么分析这道题呢? 首先 ,我们注意到一点: 不管怎么操作,任意一个2*2方格中的 "#"个数的奇偶性是不变的. 所以,如果一个2*2方格中有奇数个"#",这个 ...

  3. poj 2559 Largest Rectangle in a Histogram (单调栈)

    http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 6 ...

  4. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]

    1012: [JSOI2008]最大数maxnumber Time Limit: 3 Sec  Memory Limit: 162 MBSubmit: 8748  Solved: 3835[Submi ...

  5. BZOJ 4453: cys就是要拿英魂![后缀数组 ST表 单调栈类似物]

    4453: cys就是要拿英魂! Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 90  Solved: 46[Submit][Status][Discu ...

  6. BZOJ 3238: [Ahoi2013]差异 [后缀数组 单调栈]

    3238: [Ahoi2013]差异 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 2326  Solved: 1054[Submit][Status ...

  7. poj 2559 Largest Rectangle in a Histogram - 单调栈

    Largest Rectangle in a Histogram Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 19782 ...

  8. bzoj1510: [POI2006]Kra-The Disks(单调栈)

    这道题可以O(n)解决,用二分还更慢一点 维护一个单调栈,模拟掉盘子的过程就行了 #include<stdio.h> #include<string.h> #include&l ...

  9. BZOJ1057[ZJOI2007]棋盘制作 [单调栈]

    题目描述 国际象棋是世界上最古老的博弈游戏之一,和中国的围棋.象棋以及日本的将棋同享盛名.据说国际象棋起源于易经的思想,棋盘是一个8*8大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ...

随机推荐

  1. Linux下Tomcat启动设置debug模式启动

    原文: https://blog.csdn.net/li295214001/article/details/42077247 https://blog.csdn.net/jackie_xiaonan/ ...

  2. angular编译机制

    转载https://segmentfault.com/a/1190000011562077 Angular编译机制 前言 http://www.cnblogs.com/ztwBlog/p/620975 ...

  3. Java JDK5新特性-静态导入

    2017-10-31 00:10:50 静态导入格式:import static 包名 ...类名.方法名: 也就说可以直接导入到方法名. 注意: 方法必须是静态的 如果有多个同名的静态方法,容易不知 ...

  4. Java读取xml

    首先将xml的格式展示出来,如下 <?xml version="1.0"?> <configuration> <connectionStrings n ...

  5. [.NET开发] NPOI导出

    //导出全部 expertPara = GetExpetPara(); expertPara.BeginIndex = pager.CurrentPageIndex; expertPara.EndIn ...

  6. C#特征备忘

    [assembly:System.CLSCompliant(true)]----利用CLSCompliant属性,可以把程序集标记为与CLS兼容,但仍可以将个别方法的CLSCompliant值设为fa ...

  7. 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 ...

  8. Confluence 6 启用嵌套用户组

    一些目录服务器能够允许你在一个组中定义另外一个组.在这种结构下的用户组称为用户组嵌套.嵌套组的配置能够让子用户组继承上级用户组的权限,使系统的权限配置变得简单. 这个页面描述了 Confluence ...

  9. Tree Cutting (Hard Version) CodeForces - 1118F2 (树形DP,计数)

    大意:给定树, 每个点有颜色, 一个合法的边集要满足删除这些边后, 每个连通块内颜色仅有一种, 求所有合法边集的个数 $f[x][0/1]$表示子树$x$中是否还有与$x$连通的颜色 对于每种颜色已经 ...

  10. Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required

    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'e ...