题意:给出长度为 的序列 。
每次查询区间 中长度为
的极长值域连续段个数。
其中,集合
的值域连续段定义为:将
排序后,存在
的值是连续的,称
为一个值域连续段。
允许离线,,时限 。
显然不是根号做法,又允许离线,考虑扫描线。逐步增大右端点 ,维护每个左端点的答案。
考虑所有右端点恰为
的区间的贡献。
记 上一次出现的位置为 。
对于 的 , 在
中已经存在,故答案不变。
对于 $$
对于确定的区间 ,查询出
向前连续达到的最小数 ,向后连续达到的最大数 ,则原先的两个极长连续段是 ,现在合成为 。
对于每个
都处理显然不可承受,考虑利用
很小的性质。
我们只需要关心
中的数值。
记 表示区间 对应的 ,若 则只需记为 。
利用
容易求出各个 ,分成了 段。
对于每一段,贡献模式是确定的,用树状数组维护。
复杂度 。