原文:带lazy标记的线段树

线段树的lazy操作 以POJ Count Color为例。 线段树,是一个满的二叉树,每次每一个子节点都是父节点的一半。所以二叉树的每个节点都维护了一个区间。可是实现快速的查询。 对于更新来讲的话,如果每次都更新到最下面的节点,会非常的耗时间。所以假如更新到某个节点的时候,而这个节点的左右段和要更新的最有端点一致的话,就可以仅更新该节点,并在他的子节点上面 两个 加上一个lazy tag,不再往 ...

2016-04-06 23:23 0 2317 推荐指数:

查看详情

线段标记永久化

线段标记永久化 其实线段标记永久化是一个非常容易理解的东西,往往我们都会在区间操作时打lazytag,但是在标记下放时会耗费大量的时间,所以我们可以尝试标记永久化,这样我们的就不用下放标记,同时代码也更加简洁,因为我们少了一个pushdown函数,同时出错率也会大大降低 ...

Thu Jul 26 17:07:00 CST 2018 0 830
线段标记永久化

前言 对于,主席等使用到线段的比较复杂的数据结构,如果区间修改的话,打标记后pushdown或者pushup是很难做到的完全不行吧 所以这个时候,一个神奇的东西诞生了。。。 正题 线段标记永久化,维护一个标记,假设为cov,再维护一个sum 假设修改区间[ql, qr]全部加上v ...

Sat Jan 06 17:25:00 CST 2018 0 1029
线段的懒惰标记小笔记

线段可以进行区间更新,但是相比较于普通的线段单点更新和区间查询的功能来说,区间更新与其最大的不同就是在与区间更新需要加一个懒惰标记,来记下对懒惰标记的理解。 懒惰标记用来干什么? 解释: 理论上来说,如果[3, 9]这个区间被修改的话,那么下图中的所有绿色的结点的值都要得到重新计算 ...

Tue Jul 16 21:56:00 CST 2019 0 513
区间更新和懒惰标记线段

区间更新和懒惰标记线段 前言 普通版本的线段进行的是 单点更新 和 区间查询 . 对于带有 懒惰标记线段, 则可以进行 区间更新. 懒惰标记的意义 代表了这个结点的值已经被更新过了, 但是没有进行子树的结点值更改操作, 用lazy数组标记一下. 所以, 每次进行值的更新和查询 ...

Tue Oct 31 05:28:00 CST 2017 0 1072
线段区间更新操作及Lazy思想(详解)

此题题意很好懂: 给你N个数,Q个操作,操作有两种,‘Q a b ’是询问a~b这段数的和,‘C a b c’是把a~b这段数都加上c。 需要用到线段的,update:成段增减,query:区间求和 介绍Lazy思想:lazy-tag思想,记录每一个线段树节点的变化值,当这部分线段的一致性 ...

Mon May 01 17:05:00 CST 2017 8 5992
线段(单标记+离散化+扫描线+双标记)+zkw线段+权值线段+主席及一些例题

“队列进出图上的方向 线段区间修改求出总量 可持久留下的迹象 我们 俯身欣赏” ----《膜你抄》 线段很早就会写了,但一直没有总结,所以偶尔重写又会懵逼,所以还是要总结一下。 引言 在生活和竞赛中,我们总是会遇上一些问题,比如说令人厌恶的统计成绩,老师会想询问几个人中成绩 ...

Wed Apr 18 03:17:00 CST 2018 4 6209
线段

总原理: 将[1,n]分解成若干特定的子区间(数量不超过4*n) 用线段对“编号连续”的一些点,进行修改或者统计操作,修改和统计的复杂度都是O(log2(n)) 用线段统计的东西,必须符合区间加法,(也就是说,如果已知左右两子树的全部信息,比如要能够推出父节点);否则,不可能通过分 ...

Sat May 19 08:43:00 CST 2018 4 11559
LeetCode LCP 05. 发 LeetCoin DFS序+带懒惰标记线段

题目描述 力扣决定给一个刷题团队发 LeetCoin 作为奖励。同时,为了监控给大家发了多少 LeetCoin,力扣有时候也会进行查询。 该刷题团队的管理模式可以用一棵表示: 团队只有一个负责人,编号为 1。除了该负责人外,每个人有且仅有一个领导(负责人没有领导); 不存在循环 ...

Mon Feb 21 02:56:00 CST 2022 0 3572
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM