对线段树的一些理解

news/2025/2/22 18:11:49/文章来源:https://www.cnblogs.com/hhoppitree/p/18731189

以下均为本人对线段树的一些粗鄙理解,不保证正确。

我认为,带懒标记的线段树优化效率的关键是对于标记的高效合并,在一棵线段树上,如果我们每次遍历到一个节点的时候都下放标记,并且不妨将单位操作放入一个队列,那么,最终对于底层的一个组合对象,它调用的函数就是根节点到它路径上每个节点依次经过的操作,其中每个节点都要按照顺序遍历。

而这样的复杂度显然是劣,我们考虑加速合并操作队列的过程,考虑提取出若干个足以刻画信息的量,每次合并的时候维护这个“关键信息”,这样,我们就能实现区间修改单点查询。

好,所以线段树的 tag 和 val(叶子节点的值)是分开维护的,为了解决区间查询的问题,我们需要对于每个点记录子节点的 val 和(这个和运算可以是不满足交换律的,下面也记为 val),假设需要查询一个信息,我们只要扩大维护的信息量使得这个信息能够在区间修改的时候也能被快速更新,比如区间加区间 sin 和,就是对于维护信息的扩张。

在一类常见双序列问题中,我们常常不将“从动”信息列入 tag 中,列入 tag 中必然要是所求信息或是在信息传递的 DAG 中能够间接地导向所求信息,当然这个可能的导向信息是不唯一的,比如 sin 可以扩到 cos,但是也不排除别的导出 sin 的路径,只要能维护就好。

比如这个题:\(a\) 数列区间加(保证 \(a_i\) 恒非负),区间将 \(a_i=0\) 的位置的 \(b_i\) 加上 \(1\),求 \(b_i\) 和(梦熊炼石计划一个题最后一步)。我们可以将这个单位操作就只有线段树节点子树加,子树修改 \(b_i\),你发现,\(\sum b\) 只要在 val 中维护,同时 val 中要维护 min 和 cntmin,这都是十分自然的。

而修改的标记我们肯定要维护 \(\sum \Delta a\),考虑对于 a 贡献到 b 的形式比较丑陋,但是由于 \(a_i\ge0\),我们只要维护标记队列的 \(\Delta a\) 的前缀和最小值和此时对应的操作 \(2\) 的次数,这样这个题就做完了。

所以,我们往往在“主动”信息进行维护 val 和 tag,就是因为它们在 DAG 上有出边,而“从动”信息的维护就简单的多了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888086.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小程序-授权获取手机号

前端 wxml <button name=phone class=phone value={{userInfo.phone}} wx:if="{{!userInfo.phone}}" bindgetphonenumber="getPhoneNumber" hover-class=none open-type=getPhoneNumber>点击获取 </button>js import { wxGetPhoneNumber } fr…

Linux 中xargs 中 -L和-n参数的差异

001、-L :按照换行符的数量来传递[root@PC1 dir1]# ls [root@PC1 dir1]# echo {0..9} 0 1 2 3 4 5 6 7 8 9 [root@PC1 dir1]# echo {0..9} | xargs -L 2 ## 利用echo生成一个1行的测试数据 0 1 2 3 4 5 6 7 8 9 [root@PC1 dir1]# seq 0 9 0 1 2 3 4 5 6 7 8 9 [ro…

【humanoid gym】关于在Issac gym里面PPO算法实现里transitions部分roll out storage的记录

1. 前言 一方面便于日后自己的温故学习,另一方面也便于大家的学习和交流。 如有不对之处,欢迎评论区指出错误,你我共同进步学习! 2. 正文 2.1 在on_policy_runner.py文件夹下,初始化的地方:然后我们寻找定义的地方,在ppo.py文件夹下:其中参数num_transitions_per_env其…

Windows快速部署xxl-job.jar

1.在官网下载文件 https://gitee.com/xuxueli0323/xxl-job 2.在idea打开项目 3.修改maven版本,当前版本(2025/2/22)需要使用maven3.6.3+,maven地址:https://maven.apache.org/download.cgi maven版本过老的报错信息:Failed to execute goal org.apache.maven.plugins:mav…

复制浏览器网页文字 粘贴时却乱码的解决

本文介绍在复制网页内容后粘贴时,粘贴内容出现一个方框图案而不是当初复制内容的解决办法~本文介绍在复制网页内容后粘贴时,粘贴内容出现一个方框图案而不是当初复制内容的解决办法。最近,需要将谷歌地球引擎(Google Earth Engine,GEE)网页中的一段代码复制到另一个网页中…

【翻译】凝视深渊:千核并发控制的评估

凝视深渊:千核并发控制的评估 作者 Xiangyao Yu MIT CSAIL yxy@csail.mit.edu George Bezerra MIT CSAIL gbezerra@csail.mit.edu Andrew Pavlo 卡内基梅隆大学 pavlo@cs.cmu.edu Srinivas Devadas MIT CSAIL devadas@csail.mit.edu Michael Stonebraker MIT CSAIL stonebrake…

2.21课堂测验

需求描述: 请设计一个仓储管理系统原型系统,该系统支持多个仓库的设立。统一设立物资台账,物资台账需包含物资编码、物资名称、规格、材质、供应商、品牌、物资分类,用户可以自定义物资的物资分类。需限制不同的物资名称、规格、材质的物资不能设立相同的物资编码。仓库人员…

CSS2

盒子模型所有HTML元素可以看作盒子,在CSS中,"box model"这一术语是用来设计和布局时使用 CSS盒模型本质上是一个盒子,封装周围的HTML元素,它包括:边距,边框,填充,和实际内容 Margin(外边距):元素与其他元素的距离(边框以外的距离),外边距是透明的,需要修…

清华大学第三版《DeepSeek:如何抓住DeepSeek红利》,普通人必备的Ai手册(附PDF手册)

前两天,清华大学发布了一部极为详尽的电子书——《DeepSeek从入门到精通》。这本书将DeepSeek的基础知识以及提示词的运用方法,讲解得清晰明了、浅显易懂,一经问世便迅速在网络上引发了广泛关注与热潮。 【清华第一版】《DeepSeek从入门到精通》率先登场,给广大对DeepSeek感…

Linux 中xargs 命令的-i和-I用法差异

001、-i 选项[root@PC1 dir1]# ls a.txt b.txt dir1 h.csv i.csv [root@PC1 dir1]# tree . ├── a.txt ├── b.txt ├── dir1 ├── h.csv └── i.csv1 directory, 4 files [root@PC1 dir1]# find *.txt | xargs -i mv {} dir1/ ## -i选项可以将xargs命令传…

宜家 App 存在的 bug All In One

宜家 App 存在的 bug All In One 某商品下架后,App 的订单中就无法再查看有关商品的任何详细信息宜家 App 存在的 bug All In One bugs某商品下架后,App 的订单中就无法再查看有关商品的任何详细信息解决方案使用 Google 搜索,获取对应的商品的网页版信息https://www.ikea.c…