标记永久化

标记永久化,不同于线段树的懒标记,一旦存在就不会被消去。

1. 分块中的标记永久化

以区间加,区间查询的模板题为例。

实现

在分块中,对于区间修改操作,我们将其拆为整块与散块。为了保证复杂度,对于整块的加操作,我们维护整块的加标记;对于散块的加操作,直接修改点的值。在区间询问中,对于整块,我们直接用维护的块内权值和;对于散块,我们用点的值加上点所在块的加标记。

在上述过程中“块的标记”就是一个永久化标记。

2. 线段树中的标记永久化

传统的线段树在区间修改时会采用懒标记的策略,调用该节点时下放标记,同时修改值。

而线段树和分块本质上都是小区间合并大区间的思想,我们同样可以将永久化标记应用到线段树中,可以节省标记下放操作,两者在应用中有许多相似之处。

如果采用永久化标记,某一节点的标记表示该节点对应区间的加标记,区间和表示不包括区间整体加的权值和。

对于区间修改,遍历的点所对区间有以下几种情况:

  • 区间包含于目标区间,修改标记。
  • 区间和目标区间有交集,修改区间和,并遍历儿子区间。

对于区间查询,遍历的点所对区间有以下几种情况:

  • 区间包含于目标区间,返回区间和加上标记和。
  • 区间与目标区间有交集,令新区间为该区间与目标区间的交集,返回新区间的区间和与标记和。

具体实现

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值