首页 > 其他分享 >线段树学习笔记

线段树学习笔记

时间:2023-02-02 00:22:27浏览次数:38  
标签:递归 rs 线段 笔记 学习 ls 编号 区间

本条目持续更新中


线段树 1 : 建树 单点修改 区间求和


关于线段树:假如我们有这样一个数列 3 3 2 8 0 7 2 1
那我们就可以建一个线段树 大概长这样:
image

由图可知 编号为i的左子树编号为2i 右子树编号为2i+1
我们用k代表根 用ls代表k的左子树 用rs代表k的右子树 mid为当前k涵盖区间的中点 则有:
image


建树

容易看出 对于一个根k 它的值即为ls与rs的和 所以我们先递归ls 再递归r's 最后处理k
每次递归长度减少一半 当区间长度为1时返回原数组中对应位置
image


单点修改

我们首先查找出这个点处在的叶的位置 然后从下往上更新
image


区间求和

假设我们要求的区间为[x,y] 那么我们考虑当前k所包含的区间[l,r]与[x,y]的关系:

1.[x,y]包含[l,r] 那么就直接将s[k]加入答案中
2.[x,y]不包含[l,r] 那么就以mid为界 将[x,y]分成两段区间 然后分别递归ls rs

image

标签:递归,rs,线段,笔记,学习,ls,编号,区间
From: https://www.cnblogs.com/Steven24/p/17084572.html

相关文章

  • 机器学习之特征工程
    本文涉及的是特征选择。其实特征选择只是特征工程中的第一步。更深入的是使用特征创造或特征提取来寻找高级特征。除了对业务的理解,有四种方法可以用来选择特征:过滤法,嵌入......
  • 数论笔记7-一元高次同余方程与多元同余方程
    这里我们先讨论一般情况(但一点也不简单,有很多厉害的定理),二次剩余之后再说.1.一元同余方程的具体解法我们考虑一般的一元同余方程\(f(x)\equiv0\pmodm\),容易......
  • java学习Day.5
    数据类型java是强类型语言:严格要求符合规定,所有变量先定义才能使用。弱语言:符合规定就好publicclassdemeo02{publicstaticvoidmain(String[]args){......
  • 数论笔记汇总
    参考资料:潘承洞潘承彪《初等数论》(第三版)(主要,习题也是这上面的)闵嗣鹤严士健《初等数论》(第四版)(补充作用)大概评价一下两本书(个人主观).二潘的初等数......
  • 爬google podcast 笔记
    问题1https://stackoverflow.com/questions/57217924/pyppeteer-errors-browsererror-browser-closed-unexpectedlyexportno_proxy=localhost,127.0.0.1......
  • 《RPC实战与核心原理》学习笔记Day15
    21|流量回放:保障业务技术升级的神器什么是流量回放?流量就是指在某个时间段内的所有请求,我们通过某种手段把发送到A应用的所有请求录制下来,然后把这些请求统一转发到B......
  • 戴尔笔记本游匣DELL G16 7620更换固态硬盘从选购固态硬盘到系统和应用程序迁移(克隆)
    又到了捣鼓电脑的时候了。去年(2022年)8月14日买的电脑,当时7月份刚出戴尔游匣G16,搜了一下,2022年7月22日,戴尔首发游匣G16国行版本。到现在也就用了差不多半年的时间,我的内......
  • 算法学习记录
    排序快速排序分治思想思想解读:快速排序看左端点与右端点,双指针想法​ 首先将左边拿走,存起来为tmp,左边产生空位置。然后使用循环对右边指针进行判断,是否小于拿出的tm......
  • 【Python基础学习】9.Python计算生态概览
    主要参考来源:慕课嵩天老师的“Python语言程序设计”[https://www.icourse163.org/course/BIT-268001?tid=1468130447]9.1从数据处理到人工智能数据表示->数据清洗->数据......
  • 【基础知识笔记】014 函数文件的定义和调用
    1.函数文件的基本结构1.1定义函数function输出形参表=函数名(输入形参表)注释说明部分函数体语句end当输出形参多于一个时,应该用方括号括起来,构成一个输出矩阵......