首页 > 其他分享 >学习笔记

学习笔记

时间:2023-12-10 09:23:29浏览次数:27  
标签:log 线段 合并 笔记 节点 学习 信息 复杂度

1. 线段树平衡树进阶

  • 线段树分裂:按某个标准将线段树从某一条从根到叶子的路径处裂开,分成左、右两棵树。
    • 时间复杂度证明:由于线段树分裂时仅和一条从根到叶子的路径上的点有关,而树高为 $O(\log{n})$,所以时间复杂度为 $O(\log{n})$,且分裂一次会新建 $O(\log{n})$ 个节点,所以分裂 $m$ 次的时空复杂度均为 $O(m \log{n})$。
  • 线段树合并:将两棵线段树合并,对应节点的信息也合并。
    • 实现:从根开始递归,如果当前节点两棵线段树都有值,则合并两棵线段树的信息,并删去其中一棵线段树的节点(也可以不删,视题目而定),向左右儿子递归;否则当前节点信息定为有值的线段树的节点信息,并返回。
    • 时间复杂度证明:设所有待合并线段树总节点数为 $n$。考虑删去节点的写法。则合并信息的次数等于删去节点的次数,即 $O(n)$,而一次合并信息最多会递归到两次非合并信息的处理,则非合并信息的处理总次数也是 $O(n)$ 级别的,所以总时间复杂度为 $O(n)$。
  • 势能线段树:更改原线段树的一些操作,通过势能分析得到正确复杂度。

标签:log,线段,合并,笔记,节点,学习,信息,复杂度
From: https://www.cnblogs.com/ORzyzRO/p/17892181.html

相关文章

  • 读程序员的README笔记06_测试(上)
    1. 行为准则2. 编写、运行和修复测试用例会让人感觉很忙碌2.1. 测试本身才更容易成为繁忙的工作2.2. 糟糕的测试会增加开发人员的开销而不提供价值,并且还会增加测试套件的不稳定性3. 测试用途3.1. 测试可以检查代码是否正常工作3.1.1. 测试本身就可以验证软件的行......
  • Git的学习笔记
    Git的简单介绍‍Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目‍Git的常用命令命令名称作用gitconfig--globaluser.name'用户名'设置用户签名gitconfig--globaluser.email'邮箱'设置用户签名gitinit初始......
  • 字符串杂乱笔记
    字符串哈希将字符串的信息压缩到一个信息里面,一般压成一个值。多项式哈希:形如\(h(s)=\sum\limits^{\left|s\right|}_{i=1}s_ibase^{i-1}\)的哈希。例:"abbab",使a为\(1\),b为\(2\),base为\(7\),注:直接用s[i]-'a'会使得a的值为\(0\),导致a,aa,aaa值相同。所以用s[i]......
  • 2023-2024-1 20231307《计算机基础与程序设计》第十一周学习总结
    作业信息作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP作业要求在哪里https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP/homework/13009作业的目标自学《计算机科学概论》第15.16章和《C语言程序设计》第10章作业正......
  • 《卓有成效的程序员》读书笔记3
    《卓有成效的程序员》就是这样一本教你如何变懒的书,在机制部分,主要介绍了一些能帮助大家提升效率的工具,思想。个人总结:1、Mac系统上使用QuickSilver加快程序的启动。2、尽量少的使用鼠标,甚至都不要使用上下左右的按键,因为这些手势都会导致效率的下降。3、使用Vim作为文本编......
  • [数字图像处理笔记] 第二章 数字图像处理基础
    1.数字图像处理基础知识1.1图像数字化及表达1.1.1图像数字化将代表图像的连续(模拟)信号转换为离散(数字)信号的过程。1.1.2图像表达任一幅图像,根据它的光强度(亮度、密度或灰度)的空间分布,均可以用下面的函数形式来表达:\[I=f(x,y,z,\lambda,t)\]数字图......
  • C++学习笔记三:变量与数据类型(浮点型)
    1.数据类型与所占内存大小类型大小精度注意float47 double815默认longdouble16>double 精度就是有效数字 2.声明和初始化floatnumber1{1.12345678901234567890f};//Precision:7doublenumber2{1.12345678901234567890};......
  • Linux学习之yum管理器
    11.2yum基础源yum源指定存放在/etc/yum.repos.d,文件必须以.repo作为后缀名使用repolist查看仓库信息,显示与系统相关的基础包的数量yumrepolist每次配置yum源后,需要清除以前的yum数据库信息yumcleanall更新yum仓库本地缓存可以提高搜索与安装软件的速度yummakecache11......
  • 候捷c++学习
    浅拷贝: 如图所示a指向Hello,b指向World,直接进行b=a的赋值操作,导致b和a指向同一块地方,那么b原来指向的World就会发生内存泄漏,且由于a和b指向同一块地方,改变a也会影响b深拷贝: a指向He,b指向World,想要把b深拷贝给a,分三步走:1、 清空a原来指向的内存空间 2、开辟和b同样大......
  • Effective C++笔记总结
    1、示C++为一个语言联邦C++是个多重范型编程语言(multiparadigmprogramminglanguage),一个同时支持过程形式(procedural)、面向对象形式(object-oriented)、函数形式(functional)、泛型形式(generic)、元编程形式(metaprogramming)的语言。2、尽量以const,enum,inline替换#define宏定义的变......