序列分块

分块,是一种数据结构。

例题一

区间加,区间和。 \(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\) 块众数,随便扩展一下没了。

posted @ 2025-11-23 16:24  jerry1717  阅读(4)  评论(0)    收藏  举报