返回顶部

随笔分类 -  单调栈/单调队列

摘要:题意:有一长度为$n$的数组,问有多少子数组的最大值和最小值之差大于$k$. 题意:看数据范围,这题比较稳的写法应该是$O(n)$,考虑一个区间,如果当前区间的最大值最小值之差已经大于$k$了,那么我们再去移动右区间也一定是合法的,也就是没有意义的,那么此时固定左区间,右贡献为$n-r+1$,之后我 阅读全文
posted @ 2021-08-02 02:04 _Kolibri 阅读(270) 评论(0) 推荐(0)
摘要:题意:在一维坐标轴上有很多小机器人,它们只能一直向左或者向右每次移动一个单位,在$x=0$和$x=m$处分别设有一道屏障,小机器人达到屏障后立刻掉头反向移动,如果有两个小机器人移动后在同一个单位,那么它们就会相撞爆炸,在移动的过程中相遇并不会爆炸,问你每个小机器人爆炸的时间,如果不会相撞爆炸,输出$ 阅读全文
posted @ 2021-05-18 11:45 _Kolibri 阅读(147) 评论(0) 推荐(0)
摘要:题意:有一个$01$串,两个相邻的$0$可以变成一个$1$,两个相邻的$1$可以直接消除,问操作后的字符串. 题解:数组模拟栈直接撸,上代码吧. 代码: class Solution { public: /** * * @param str string字符串 初始字符串 * @return str 阅读全文
posted @ 2020-08-14 00:52 _Kolibri 阅读(141) 评论(0) 推荐(0)
摘要:题意:有一个$n$x$m$的矩阵,\(A_{i,j}=lcm(i,j)\),对于每个$k$x$k$的子矩阵,其最大元素贡献给答案,求答案的最大值. 题解:矩阵构成我们直接$i*j/gcd(i,j)$即可,然后就要去找每个子矩阵中的最大元素. ​ 这题我们可以用单调队列来求,首先先对每一列维护长度为$ 阅读全文
posted @ 2020-07-15 17:16 _Kolibri 阅读(127) 评论(0) 推荐(0)