单调栈
文章平均质量分 68
bailuoheng
这个作者很懒,什么都没留下…
展开
-
单调栈
含义:所谓单调栈,顾名思义,首先是栈,然后内部元素是单调的,递增或递减的;作用:一般来说,单调栈能解决的题目时间复杂的如果是朴素的计算的话,就是n^2,然后单调栈的作用就是降低到n。解析:至于为什么能把时间复杂度降低呢,一般来说,单调栈能解决的问题都是可以通过转化为区间最值问题,在找某个值作为最大最小值的区间,然后由于大于小于大于等于小于等于都是具有传递性的,所以时间复杂度就降低为原创 2017-06-26 21:04:25 · 361 阅读 · 0 评论 -
51nod 1102
题目大意:有一个正整数的数组,化为直方图,求此直方图包含的最大矩形面积。例如 2,1,5,6,2,3,对应的直方图如下:面积最大的矩形为5,6组成的宽度为2的矩形,面积为10。Input第1行:1个数N,表示数组的长度(0 <= N <= 50000)第2 - N + 1行:数组元素A[i]。(1 Outpu原创 2017-06-26 21:24:03 · 208 阅读 · 0 评论 -
poj 2796
题目大意:输入n,表示有n头牛,然后每头牛只能看到他右边比他矮的牛的头发(一样高也不行,因为这个wa了一发),一旦有牛比他高或者和他一样高,此后的牛的头发他就看不见了,求每头牛能看到的其他牛的头发的总和;基本思路:单调栈;代码如下:#include#include#include#include#include#include#include#inc原创 2017-06-26 21:40:42 · 270 阅读 · 0 评论 -
poj 3250
题目大意:输入n,表示有n头牛,然后每头牛只能看到他右边比他矮的牛的头发(一样高也不行,因为这个wa了一发),一旦有牛比他高或者和他一样高,此后的牛的头发他就看不见了,求每头牛能看到的其他牛的头发的总和;基本思路:单调栈;代码如下:#include#include#include#include#include#include#include#i原创 2017-06-26 21:58:22 · 313 阅读 · 0 评论 -
codeforce 871D Imbalanced Array
题目大意:然后就i是输入一个整数n,然后输入n个整数,然后求这个区间的子区间的最大值最小值的差值的和;基本思路:转化为用单调栈求每一个值作为最大值和最小值能管到的区间范围,然后求每一个以该值为最大值的区间的个数然后乘以这个最大值加到res上,在求出以该值为最小值的区间个数乘以这个值,然后res减去这个值,最终就等效于求出了所有子区间最大值与最小值的差值的和;代码如下:#incl原创 2017-06-26 21:59:53 · 321 阅读 · 0 评论