单调队列和单调栈
单调队列和单调栈
_hunxuewangzi
这个作者很懒,什么都没留下…
展开
-
Codeforces Round #361 (Div. 2) D. Friends and Subsequences 题解(st表+二分 or 单调队列)
题目链接题目大意给你两个长度为n(2e5)的数组a和数组b,要你求有多少个区间区间满足下列式子即有多少个字串,使得a字串的最大值等于b字串中的最小值st表+二分首先你可以固定左端点,然后你会发现右端点变大时,a数组的最大值是非严格单调递增,而b数组的最小值是非严格单调递减的。所以就很容易想到去二分查找.枚举左端点,查找右端点。你会发现右端点可能是一段区间,然后我就不知道咋做了,其实就是两次二分就行了qwq代码#include<set>#include<map>#i原创 2020-08-12 09:52:32 · 158 阅读 · 0 评论 -
B - Largest Rectangle in a Histogram 题解(单调栈)
题目链接题目思路单调栈求出每个矩形可以向左向右延伸的最大长度。代码#include<cstdio>#include<stack>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#define fi first#define se second#define debug printf("I am here\n");using原创 2020-07-09 19:25:48 · 210 阅读 · 0 评论 -
A - Subsequence 题解(rmq+尺取 / rmq+二分 / 双单调队列)
题目链接题目大意找到最长的字串使其满足最大元素和最小元素的差值大于等于mi小于等于marmq+尺取#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#define fi first#define se second#define debug printf("I am here\n");using names原创 2020-07-09 10:58:11 · 176 阅读 · 0 评论 -
周赛 摆蔬菜1 题解(线段树+二分or单调队列)
题目链接题目思路显然可以线段树+二分直接来,也可以单调队列,单调队列的代码要仔细研究主要为了研究单调队列的操作线段树代码#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;typedef long long l...原创 2020-03-29 19:36:10 · 204 阅读 · 0 评论 -
洛谷 P1886 滑动窗口 /【模板】单调队列(单调队列模板)
题目链接题目思路以最小值为例:构造一个单调队列b[i],记h为元素下标,b中存下标。第一次:b={1};第二次:b={1,2}(因为3>1且在范围内);第三次:b={3}(因为队列单调递增,-1最小,所以挤掉1和3,找最小值的时候也不会轮到它们);第四次:b={4}(1已经在外面了。-3<-1果断挤掉);第五次:b={4,5}(5>-3 可以作为候选人);第六次:...原创 2020-03-26 21:48:38 · 237 阅读 · 0 评论 -
洛谷 P5788 【模板】单调栈(单调栈模板)
题目链接原文链接题目大意找第 i 个元素之后第一个大于 a[ i ] 的元素的下标题目思路首先可以把题目思路转化一下。有n个人,每个人向右看,求她看到的第一个人。 如图通过观察,我们会发现,在她后面的,比她矮的,一定会被她遮住。那么,这个点就没用了。而根据现实生活和刚才的推断,我们看到的人肯定是一个比一个高的,而没看到的,留着也没用,直接扔了。那么,这就是符合单调性的。再看,那些...转载 2020-03-07 16:54:58 · 504 阅读 · 1 评论