单调栈即为满足单调性的栈结构。与栈相似,只允许在一端进行进出操作。
单调栈可以用于寻找下一个最大数,也可寻找下一个最小数,以及建立在这基础上的更高级的模型。
二、单调栈的结构与操作 1.插入操作将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。
例如,栈中自顶向下的元素为 1 , 3 , 5 , 10 , 30 , 50 {1,3,5,10,30,50} 1,3,5,10,30,50,插入元素 20 20 20 时为了保证单调性需要依次弹出元素 1 , 3 , 5 , 10 1,3,5,10 1,3,5,10,操作后栈变为 20 , 30 , 50 20,30,50 20,30,50。
用伪代码描述如下:
insert x
while !sta.empty() && sta.top()
关注
打赏
- 回坑记之或许是退役赛季?
- [LCT刷题] P1501 [国家集训队]Tree II
- [LCT刷题] P2147 洞穴勘测
- 2022-2023 ICPC Brazil Subregional Programming Contest VP记录
- [线段树套单调栈] 2019-2020 ICPC Asia Hong Kong Regional Contest H.[Hold the Line]
- The 2021 ICPC Asia Nanjing Regional Contest E.Paimon Segment Tree 区间合并线段树/维护矩阵乘法
- CF580E - Kefa and Watch 线段树维护哈希
- HDU5869 Different GCD Subarray Query 离线查询/区间贡献
- 27.CF1004F Sonya and Bitwise OR 区间合并线段树
- 26.CF1000F One Occurrence