Largest Rectangle in a Histogram /// 单调栈 oj23906
题目大意:
输入n,,1 ≤ n ≤ 100000,接下来n个数为每列的高度h ,0 ≤ hi ≤ 1000000000
求得最大矩阵的面积
7 2 1 4 5 1 3 3
4 1000 1000 1000 1000
0
8
4000
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[],L[],R[],sta[]; // sta[]模拟栈
int main()
{
while(~scanf("%lld",&n)) {
if(n==) break;
for(int i=;i<n;i++) scanf("%lld",&a[i]);
int tail=;
for(int i=;i<n;i++) {
while(tail> && a[sta[tail-]]>=a[i]) tail--;
L[i]= tail== ? :sta[tail-]+;
sta[tail++]=i;
}
/// L[]存放向左能达到的最远下标
// for(int i=0;i<n;i++) printf("%lld ",L[i]);printf("\n");
tail=;
for(int i=n-;i>=;i--) {
while(tail> && a[sta[tail-]]>=a[i]) tail--;
R[i]= tail== ? n:sta[tail-];
sta[tail++]=i;
}
/// R[]存放向右能达到的最远下标+1
// for(int i=0;i<n;i++) printf("%lld ",R[i]);printf("\n");
ll ans=;
for(int i=;i<n;i++)
ans=max(ans,a[i]*(R[i]-L[i]));
/// R[i]-L[i]就能得到该矩阵的长度
printf("%lld\n",ans);
} return ;
}
Largest Rectangle in a Histogram /// 单调栈 oj23906的更多相关文章
- poj 2559 Largest Rectangle in a Histogram - 单调栈
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 19782 ...
- POJ 2559 Largest Rectangle in a Histogram(单调栈)
传送门 Description A histogram is a polygon composed of a sequence of rectangles aligned at a common ba ...
- POJ 2559 Largest Rectangle in a Histogram (单调栈或者dp)
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15831 ...
- hdu 1506 Largest Rectangle in a Histogram(单调栈)
L ...
- po'j2559 Largest Rectangle in a Histogram 单调栈(递增)
Largest Rectangle in a Histogram Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29498 ...
- POJ2559 Largest Rectangle in a Histogram —— 单调栈
题目链接:http://poj.org/problem?id=2559 Largest Rectangle in a Histogram Time Limit: 1000MS Memory Lim ...
- HDU - 1506 Largest Rectangle in a Histogram (单调栈/笛卡尔树)
题意:求一个直方图中最大矩形的面积. 很经典的一道问题了吧,可以用单调栈分别求出每个柱子左右两边第一个比它低的柱子(也就相当于求出了和它相连的最后一个比它高的柱子),确定每个柱子的左右边界,每个柱子的 ...
- POJ2559 Largest Rectangle in a Histogram 单调栈
题目大意 有一个直方图,其所有矩形的底均是1(以后简称小矩形).给出这些矩形的高度,求这些矩形的并集中存在的面积最大的矩形(简称大矩形)的面积. 题解 大矩形的高必然一边等于一个小矩形的高,另一边小于 ...
- PKU 2559 Largest Rectangle in a Histogram(单调栈)
题目大意:原题链接 一排紧密相连的矩形,求能构成的最大矩形面积. 为了防止栈为空,所以提前加入元素(-1,0) #include<cstdio> #include<stack> ...
随机推荐
- Java——子类对象实例化的全过程
2.4子类对象实例化的全过程 public class TestDog { public static void main(String[] args) { Dog d = new Dog(); d. ...
- QueryList 来做采集是什么样子
采集百度搜索结果列表的标题和链接. $data = QueryList::get('https://www.baidu.com/s?wd=QueryList') // 设置采集规则 ->rule ...
- maven添加本地jar到本地仓库
安装指定文件到本地仓库命令: mvn install:install-file -DgroupId= : 设置项目代码的包名(一般用组织名) -DartifactId= : 设置项目名或模块名 -Dv ...
- NOIp2018集训test-9-23
这个NOI模拟题怕是比你们的NOIp模拟题要简单哦.. 友好的生物 应该是一道简单题,但是机房只有辉神一个人想到正解似乎. 被我kd-tree水过去了(这不是kd-tree的裸题吗???(不是)) / ...
- NX二次开发-NXOpen中Point3d类型转换成point类型
NX9+VS2012 #include <NXOpen/NXObject.hxx> #include <NXOpen/Part.hxx> #include <NXOpen ...
- 利用NHibernate与MySQL数据库交互
本文章使用Visual Studio作为开发工具,并建立在已经安装MySQL数据库的前提. NHibernate是一个面向.NET环境的对象/关系数据库映射工具.官网:http://nhibernat ...
- scrapy爬取cnblogs文章列表
scrapy爬取cnblogs文章 目标任务 安装爬虫 创建爬虫 编写 items.py 编写 spiders/cnblogs.py 编写 pipelines.py 编写 settings.py 运行 ...
- oracle一体机(exdata)创建ACFS文件系统
ACFS是一个支持多个平台,可扩展的,基于ORACLE ASM的集群文件系统,可以用来存储数据库和各种应用的文件,包括数据库的trace文件,alert日志文件和配置文件等等,也可以用来存储视频,音频 ...
- linux安装&卸载IB网卡(mellanox)驱动
由于工作上的需求,需要在redhat6.5服务器上面安装mellanox品牌的IB网卡,故整理了一个安装&卸载IB网卡驱动的教程: 一.安装 1)下载相应操作系统驱动 http://www.m ...
- ajax 接收json数据的进一步了解
var url = "../searchclasses"; $.ajax({ url: url, type: "post", dataType: "j ...