一些连续段的性质

连续段定义为序列的一个值域连续的子串。


连续段在排列上有一些性质,比如,连续段的并,交,差都仍然是连续段。

在排列上,区间 \([l,r]\) 是连续段的条件退化为 \(\max-\min=r-l\),也即 \(\max-\min+l-r=0\)

这个式子对任意区间 \(\ge 0\),因此扫描线,单调栈维护极值,线段树维护最小值即可维护相关信息。


另一个方法是,区间 \([l,r]\) 内恰有 \(r-l\)\((x,y)\) 满足 \(|a_x-a_y|=1\)。(\(l\le x\le y\le r\)

我们对 \(r\) 扫描线,维护 \(l\le x\le y\)\((x,y)\) 的数量 \(c\)

对每个合法对在 \(y\) 的位置对 \([1,x]\) 区间加,维护 \(l+c_l\) 的最大值,取得 \(r\) 时即 \([l,r]\) 为连续段。

可以认为是点边容斥的一种。


对于不是排列的序列,条件没有这么简单。

但我们仍可以 \(\mathcal O(1)\) check 区间是否是连续段:先要求 \(\max-\min=r-l\)

然后对每个数随机赋权异或哈希即可。

posted @ 2026-07-18 20:18  CuteNess  阅读(3)  评论(0)    收藏  举报