SP1805 HISTOGRA (单调栈)
单调栈维护栈顶为高度最大的
记下来栈中每个元素入栈时顶掉的最靠左的一个位置(如果没顶掉就是它本身),那么在它出栈的时候,它所带来的面积就是(出栈位置-记录位置)*高度 (可能会有加一减一之类的细节)
#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long int
using namespace std;
const int maxn=; int rd(){
int x=,neg=;char c=getchar();
while(c<''||c>''){if(c=='-') neg=-;c=getchar();}
while(c>=''&&c<='') x=x*+c-'',c=getchar();
return x*neg;
} //题意:给一些并排放置的宽度相等的矩形,要求在其中截一个矩形出来,求截出的最大的面积
//从前往后做,每次加入一个长度,同时记录它进来的时间
//若栈中有比它长度大的,将它们出栈,并将当前记录的时间改为已出栈的的最早时间,同时更新答案为(当前时间-出栈的的记录时间)*出栈的的长度
//最后可以假装有一个长度为0的来使所有人出栈,方便统计答案 int N;
int s[maxn][],head;
LL ans; int main(){
int i,j,k;
while(){
N=rd();if(!N) break;
ans=;
head=;s[][]=rd();s[][]=;
for(int t=;t<=N+;t++){
if(t<=N) j=rd();else j=;
for(i=head,k=t;i;i--){
if(s[i][]>=j) k=min(k,s[i][]),ans=max(ans,1ll*s[i][]*(t-s[i][]));
else{
head=i+;s[head][]=j;s[head][]=k;break;
}
}if(!i){head=;s[][]=j;s[][]=k;}
}
printf("%lld\n",ans);
}
}
SP1805 HISTOGRA (单调栈)的更多相关文章
- SP1805 HISTOGRA - Largest Rectangle in a Histogram 题解
		题目链接:https://www.luogu.org/problemnew/show/SP1805 分析: 我们可以用一个单调栈由低到高来存储它的高度,并用数组对每个高度记录一下它前面(包括它自己)一 ... 
- 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大小的黑白相间的方阵,对应八八六十四卦,黑白对应阴阳. 而我们的 ... 
- 洛谷U4859matrix[单调栈]
		题目描述 给一个元素均为正整数的矩阵,上升矩阵的定义为矩阵中每行.每列都是严格递增的. 求给定矩阵中上升子矩阵的数量. 输入输出格式 输入格式: 第一行两个正整数n.m,表示矩阵的行数.列数. 接下来 ... 
- POJ3250[USACO2006Nov]Bad Hair Day[单调栈]
		Bad Hair Day Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 17774 Accepted: 6000 Des ... 
随机推荐
- 第一章:模型层model layer -- Django从入门到精通系列教程
			该系列教程系个人原创,并完整发布在个人官网刘江的博客和教程 所有转载本文者,需在顶部显著位置注明原作者及www.liujiangblog.com官网地址. 题外话: Django的教程写到这里,就进入 ... 
- zjoi2018 day1游记
			咕咕咕 upd:看见有人贴上zhihu的问题,那个我早就看到了... 谴责一番题主 @gzy_cjoier 阅读量马上700没想到吧 既然这么火我挂个广告吧 永别,OI 听说有人催更?? 
- C# 获取文件MD5值的方法
			可用于对比文件是否相同 /// <summary> /// 获取文件MD5值 /// </summary> /// <param name="fileName& ... 
- .NetCore实践篇:分布式监控Zipkin持久化之殇
			前言 本系列已写了四篇文章,读本篇之前,可以先读前面几篇. 思考大纲:.Net架构篇:思考如何设计一款实用的分布式监控系统? 实践篇一:.NetCore实践篇:分布式监控客户端ZipkinTracer ... 
- 个人作业 Last
			对M1/M2阶段的总结 M1阶段的总结反思见我以前的博客,我以前曾经写过.现附上链接.http://www.cnblogs.com/jirufeng/p/4990245.html M2阶段主要是对我们 ... 
- LINUX实践之模块
			模块实践 --关于模块代码部分 ---首先是.c代码: 一定会用到的函数有这几个:module_init().module_exit().MODULE_LICENSE() 会用到的头文件:module ... 
- 趟坑:使用pip安装TensorFlow
			这几天在安装TensorFlow,看了很多教程,方法也试了几种. 最后还是用pip安装成功的,过程如下. 1.安装ubuntu后在 系统设置-软件与更新-附加驱动 里,更新N卡驱动. (N卡官网下载 ... 
- opencv学习笔记(三)
			imread()读入图,第一个参数,const string&类型的filename,填我们需要载入的图片路径名, 第二个参数,int类型的flags,为载入标识,它指定一个加载图像的颜色类型 ... 
- Spring注解 开发
- [系统软件]Ubuntu 18.04中的Shutter禁用了“编辑”选项解决
			本文引用自linux公社, 原文请点击 : https://www.linuxidc.com/Linux/2018-04/151911.htm 在Ubuntu 18.04中安装了我最喜欢的截图工具 ... 
