首先莫队算法刚开始学的时候花了不少时间,现在回过头来看还是很简单。
特点:[已知l,r]区间的答案,可以在O(1)或者O(logn)(莫队套树状数组或者线段树)得到l,r+1的答案。
自己的话来说就是区间只发生很小的变化,那么我们推导出递推公式,只要加上一个增量就得到新区间的答案。
还有就是离线的特点,莫队算法就是要将要查询的区间排序,然后使用两个指针,去移动目标区间。因为排好序以及分块的原因,所以这些移动的复杂度可以达到
n
\sqrt{n}
n,然后有n个区间,所以平均复杂度是n
n
\sqrt{n}
n.
莫队是一种区间递推算法,通过离线的方式,将要查询的区间排序,使得从一个查询区间到另一个查询区间的平均复杂度为 n \sqrt{n} n从而达到性能的优化。
递推算法的实质:已知当前状态的函数值,推导出其他在该状态发生微小变化的状态的函数值,充分利用了过去已经计算出来的状态函数值,而不需要从头开始计算。