[学习笔记]莫队
主要思想
分成 \(\sqrt{N}\) 个块,将询问的l按所属块分组,再对每一组按r升序排序。暴力算答案。
需要注意的是,端点平移一个单位时,需要在 \(O(1)\) 内完成对答案的改变。( \(O(logN)\)有的数据范围也能接受 )。
时间复杂度
-
左操作:每个块 \(O(Q_i\sqrt{N})\), \(\sqrt{N}\) 个块 \(O(\sum Q_i\sqrt{N})=O(Q\sqrt{N})\)。
-
右操作:每个块 \(O(N)\),\(\sqrt{N}\) 个块 \(O(N\sqrt{N})\)。
总复杂度:\(O(N\sqrt{N})\)。