单调栈
romiqi_new
这个作者很懒,什么都没留下…
展开
-
[CF997E][线段树][单调栈]Good Subsegments
CF997E可以发现,一个区间是好的当且仅当max−min−(r−l)=0max-min-(r-l)=0max−min−(r−l)=0,所以可以离线维护max−min−(r−l)max-min-(r-l)max−min−(r−l)的最小值和最小值个数,每次往后移动都会使最小值(r−l)+1(r-l)+1(r−l)+1,并且maxmaxmax和minminmin会改变,这里用两个单调栈维护max和...原创 2019-09-04 12:49:10 · 399 阅读 · 0 评论 -
[CF1083D][线段树][单调栈]The Fair Nut's getting crazy
CF1083D按照套路,我们从左往右枚举交区间的r,并计算方案数设L[i],R[i]为i前面/后面第一个与它相同的位置,pos为最小的满足[pos,i]中没有重复数的位置,则以r为交区间的右端点的方案数为∑i=posr(mn{R[i]}−r)(i−mx{L[i]})\sum_{i=pos}^r(mn\{R[i]\}-r)(i-mx\{L[i]\})∑i=posr(mn{R[i]}−r)(i−...原创 2019-09-04 21:59:03 · 254 阅读 · 0 评论 -
[BZOJ4826][主席树][单调栈]HNOI2017:影魔
BZOJ4826又来。。。显然考虑枚举作为区间最大值的位置iii,然后我们需要知道L[i]L[i]L[i]和R[i]R[i]R[i]表示iii左右两边第一个大于它的数的位置,用单调栈维护考虑一个iii对答案的影响,显然就是以下情况:L[i]L[i]L[i]和R[i]R[i]R[i]组成p1p1p1的影响iii和i+1i+1i+1组成p1p1p1的影响(L[i],i)(L[i],i)(...原创 2019-09-09 21:55:05 · 152 阅读 · 0 评论 -
[BZOJ4540][线段树][单调栈]HNOI2016:序列
BZOJ4540不想写了,看这个下传的时候要推一下合并的式子,类似矩阵乘法Code:#include<bits/stdc++.h>#define ll long longusing namespace std;inline int read(){ int res=0,f=1;char ch=getchar(); while(!isdigit(ch)) {if(ch==...原创 2019-09-11 22:00:59 · 139 阅读 · 0 评论 -
[LOJ3083][单调栈]GXOI/GZOI2019:与或和
LOJ3083很显然是拆位那么对于and,就是统计这个01矩阵中的全1子矩阵个数对于or,就是统计这个01矩阵中的全0子矩阵个数,再用全集减去它统计01矩阵的全1子矩阵个数就直接上单调栈即可大致做法:记录矩阵内每一个点上方的连续1有多少个(包括自身)扫描每一行,求出以每个点为右下角的矩阵的个数,可以用单调栈弹掉不合法的答案Code:#include<bits/stdc++....原创 2019-09-19 13:02:43 · 130 阅读 · 0 评论