莫队的前身是滚动的尺取法。
莫队是一个很神奇的算法,我们仅仅改变一下问题求解的次序就能得到一定程度上的优化。
归根结底是分块思想,一般分为根号n块,这样每组数据的算法复杂度就是(n+m)根号n。
这是一个必须离线的算法。
先分块,一般分为根号n块,再对左右端点排序。
bool cmp(Query x,Query y){
if ((x/block)!=(y/block))
return x.L<y.L; //不同块的时候
return x.r<y.r; //同一块的时候
}