优美的暴力—分块

    分块即优美的暴力,通过将数组分成小块降低复杂度。分块可以维护线段树不好维护或根本维护不了的信息。线段树维护的信息必须具有可合并性,单调性等,而分块对信息性质的要求并没有那么苛刻。但在思想上,分块又与线段树十分类似,通过标记等操作来降低复杂度。

基本定义:

    一个长度为N的序列,块的大小为block,从序列的第一个元素开始,每block个单位为一个块,若最后剩余的块不足block个,则自成一块。

    每个块的大小(block)为优美的暴力—分块。(优美的暴力—分块或许不是最优,但一般满足大部分的题目要求)

    块数(cnt)为 cnt=N/block+(N%block==0?:0:1)

    位置 i 属于第 (i-1)/block+1 块,优美的暴力—分块

    第 i 块的范围为 优美的暴力—分块

    整块:操作区间完全覆盖的块。

    边块:操作区间不完全覆盖的块。

基本操作:

   对于区间优美的暴力—分块操作时存在两种情况。(L所在块为bl,R所在块为br)

     ① 区间优美的暴力—分块在同一个块内(bl=br):暴力重构。

     ② 区间优美的暴力—分块不在同一个块内(bl>br):

       左边块:优美的暴力—分块,暴力重构。

       右边块:优美的暴力—分块,暴力重构。

       中间整块:bl+1,bl+2 ,……,br-1,通过标记数组等进行操作。

区间修改,单点求和:

以区间修改,单点求和为例。

优美的暴力—分块

优美的暴力—分块

 

附:分块9题

上一篇:RocketMQ消息丢失场景及解决办法,分布式系统的一致性级别划分


下一篇:RocketMQ源码解析十一(Consumer上报消费进度流程(集群模式))