
数据结构
文章平均质量分 57
峙峙峙
有谁知道自己每天在干什么吗?
有的是只有自己知道,有的是只有自己不知道,有的甚至是根本没人知道。
反正不知道的总比想知道的好!
展开
-
线段树学习记录
线段树经常要用到:一个问题只要能转化成对一些连续点的修改和统计问题,基本就可以用线段树解决 (优化),把模板记住最好。创建部分:PushUp函数用于回溯,可计算区间和或最大值等等(样例中给的是求最大值的代码)Update区间更新,启用懒惰标记版,当当前区间完全包括在要修改的区间内时标记后不再下推。基本结构部分:val是节点的信息,可以是多个,可以是区间最大值、GCD等。二分思想,将一段区间不断细分处理,解决单点/区间的修改和查询问题。lazy标记是其中的精髓,可以大大提高区间修改的效率。原创 2023-02-10 16:15:52 · 80 阅读 · 0 评论 -
树状数组VS线段树
需要注意的是,若视原数列为差分数组,则在初始更新时每一步都需要add两次,为了解决这一问题,可另开一个数组存储原始数列,树状数组只存储变化量,输出时只需要将变化量加在原始数列即可。void pls(int index,int l,int r,int k) 整个包含在l,r内的区间num+k后直接返回,不再往下处理。应用无非有四类:单点修改,单点查询,区间修改,区间查询。实现区间更新时将原数列视作差分数组,区间x到y全部+k需要add(x,k)和add(y+1,-k)两步实现。原创 2023-02-09 22:31:48 · 284 阅读 · 0 评论