P5788 【模板】单调栈
题意:给定一个数列,求数列中每一个元素之后第一个大于该元素的下标
若存在一个数大于它之后的数,那么当我们在左边计算答案的话,那个较小的数不可能被统计到。
所以利用单调栈的做法,和右边的比就从右边统计,维护一个栈就行了
P6510 奶牛排队
题意:给定一个数列,求最长的连续子段,要求最左段的元素是子段中最小的,最右边的元素是子段中最大的
枚举右端点,维护两个单调栈,一个从小到大,一个从大到小。对于每个枚举,右端点是固定的,可以通过单调栈得到上一个更大的元素的下标,而左端点是活动的,由于单调栈内元素的大小和下标都是单调的,可以通
过二分的方法得到在两个大元素中最左边的小元素
P4137 Rmq Problem / mex
题意:给定一个数列,每次询问一个区间内最小没有出现过的自然数。
利用主席树,每个线段树维护区间内每个值上次出现的位置的最小值,对于每个询问[l,r]只用找最左子树中小于l的那个元素就行了