
单调栈
fire_lch316
这个作者很懒,什么都没留下…
展开
-
单调栈使用场景
比方求最近大:那么这个值的价值只能被后面大的去计算,也就是被大的去pop,新来的值会pop栈内小的值,那么就是递减栈。使用单调栈记住这一点去判断是递增栈还是递减栈:每个位置的值都会进栈一次,这个值如果被pop出栈了,那么就是计算这个值价值的时候。原创 2022-10-09 10:13:07 · 277 阅读 · 1 评论 -
百度914笔试A卷第二题 排队
事后想出的方法,可以用单调栈。不过这个单调栈的构造是真的难恶心到我了,尤其出现0的那个情况一直过不去。最后才搞明白。可以这么想:统计后面的人有多少步延迟了,刚开始想到这个地方就直接带到后缀和的思路去了,在不怎么正确的思路上越走越远。后来发现数据范围和动态性问题无法解决便放弃了它。再后来发现了一丢丢单调栈的特征(每次前k人移动的时候就重置了这K个人的步数,那么只用保存它之前的且大于K重置的记录就行了 /(ㄒoㄒ)/~~)。还有就是计数的时候,统计第i时,第i个人要单独拎出来算,因为他到柜台前就不用走了。原创 2021-09-15 14:43:28 · 146 阅读 · 0 评论 -
poj-2559 单调栈
题目链接:https://vjudge.net/problem/POJ-2559以前接触这道题的时候还以为这是单调栈的模板题。但现在觉得单调栈数据结构远比这道题解法好理解得多。解法:初次见这道题的话肯定是先分析问题(鬼tm才一开始就确定单调栈是解法)。首先:按照常规思路,试一试从左到右扫描,每扫到一个位置i,高度为h[i],计算位置i的贡献attri[i]:当第i个棍一定会被贡献(...原创 2019-12-30 16:47:00 · 367 阅读 · 0 评论