莫队算法可以解决区间的静态查找问题,并且是一种离线算法。
如果可以在O(1)的时间复杂度下由[L, R]的答案得到[L, R+1], [L, R-1],[L+1, R],[L-1, R]的答案,那么就可以使用莫队算法。
莫队算法预先知道所有的提问,并按照一定顺序进行计算,能在O(n*sqrt(n))的时间复杂度内解决查询问题,并且几何意义为求二维平面上的一棵最小曼哈顿距离生成树。
由于最小曼哈顿距离生成树的变成复杂度太高,分块是一种很好的替代品。先按每个区间左端点在每个块中的位置排序,如果相同则按右端点排序。