摘要:
考虑什么时候区间长度=区间mex 把点按照权值从1到n顺序加入。 枚举权值的右端点,线段树维护每一个点的点数 边数。 点数显然很好维护,边数的话,考虑右端点移动以后,新加入一个数字。 看一下和它相邻的两个数字,如果比它小的话,就在线段树上做一次区间减法。 查询的时候,线段树上权值为1的位置即为合法区 阅读全文
摘要:
这是一种经典的单调栈+线段树的维护方法。 从左到右枚举右端点。 线段树维护每一个左端点的max(+ or )min的值。 每次右端点移动的时候,把a[i]加入单调栈。 每弹栈一次,便在线段树上把对应弹掉的区间加上a[i] a[s[top]]。 时间复杂度是均摊O(nlogn)的。 阅读全文