modui 1
莫队(莫比乌斯队列),离线算法
首先我们需要知道一个询问的回答
然后我们需要知道询问区间的变化对于询问答案的影响
知道这两点以后就可以利用区间端点l和r来回移动修改答案了
不过如果l和r的跨度很大,甚至大于重新算答案,显然这个算法还不如暴力
这时候我们就可以优化一下下
1.分块
主要作用是限制l和r
对于左端点分块,限制l的范围在 \(O(\sqrt{N})\) 这个区间
这个时候右端点就控制不住了
排序
块内排序限制右端点单增,这样右端点的移动就是块内 \(O(\sqrt{N})\) 了
2.奇偶化排序
这个东西是对于出块来讲的
如果出块,考虑一个数据:
块1的右端点询问是:
9 1000
块2的左端点是:
10 11
块2右端点的询问是:
11 999
此时从块1到2再到3,r跳2000步
如果把块2的右端点改到左端点,r只用跳1000步
为了把情况1转换到情况2,排序函数应奇偶分类
奇数块r单增,偶数块单减
这一步优化就使r连续变化,从而加速莫队
然后就是一些操作了
普通莫队和带修莫队等等