序列分块
分块,是一种数据结构。
例题一
区间加,区间和。 \(O(\sqrt n) - O(\sqrt n)\)
对每 \(\sqrt n\) 或别的块长分块处理块内的和,于是就可以处理区间加,即对块上维护的值加上长度 \(\times\) 加的值就可以了。
例题二
区间加,区间和。 \(O(1) - O(\sqrt n)\)
同上题,维护块内差分数组与整块差分数组,做完了。
例题三
区间加,区间和。 \(O(\sqrt n) - O(1)\)
同上题,维护块内前缀和数组与整块前缀和数组,做完了。
例题四
区间 \((i,j)\) 且 \(a_i=a_j\) 二元组数量。
维护 \(F_{i,j}\) 表示第 \(i\) 块到第 \(j\) 块的答案,\(h_{i,j}\) 表示前 \(i\) 块内 \(j\) 出现次数,随便做一下没了。
例题五
区间众数。
同上题维护 \(F_{i,j}\) 表示第 \(i\) 块到第 \(j\) 块众数,随便扩展一下没了。

浙公网安备 33010602011771号