浅谈分块

分块是一种处理序列问题的科技,这种算法把序列分成若干段,对于区间的处理与询问,遵从“大段维护,小段朴素”的思想。如果我要处理或者询问的区间包含了某一段,那么可以在极小的时间复杂度内把这一段的信息进行维护,对于不包含的就直接暴力更新。等到要询问的时候,把被询问区间包含的段的信息直接整个贡献进总答案里,对于不包含的段就暴力统计。一般段的长度是(sqrt{n})的,这样子暴力的复杂度不会超过(sqrt{n}),完整的段的个数也不会超过(sqrt{n}),复杂度就是(sqrt{n})的了。

分块看似十分暴力,但是在某些时候,却能用较小的代码完成较复杂的数据结构的功能,起到四两拨千斤的作用。

原文地址:https://www.cnblogs.com/AKMer/p/10369816.html