何谓莫队算法?
莫队算法是莫涛队长发明的,为表示对他的尊敬,故称这种算法叫莫队。
适用范围
一种处理序列操作的离线算法,适用范围广,复杂度一般带根号。
莫队算法的思路
假设题目不涉及修改操作。将所有操作离线,将所有操作进行二元组排序,第一维是左端点所在块的编号,第二维是右端点。排序后,按照顺序处理询问,维护一个双端队列,同时维护队列内区间的答案,每次从$[L,R]$的答案,扩展到$[L-1,R]$ $[L,R-1]$ $[L+1,R]$ $[L,R+1]$的答案,最终得到当此询问区间的答案。
时间复杂度分析
假设序列长度为$n$,询问数为$m$,分块块长为$d$,那么左端点在同一块内时,左端点移动每次不超过$d$,右端点总共移动不超过$n$,显然是$\Theta (m\times d+\frac{n^2}{d})$,令$d=\sqrt{n}$,$n,m$同阶,则时间复杂度为$\Theta(n\sqrt{n})$,常熟很大。
原文:https://www.cnblogs.com/wzc521/p/11240671.html