首页 > 其他分享 >主席树学习笔记

主席树学习笔记

时间:2024-12-17 22:53:10浏览次数:4  
标签:持久 线段 笔记 学习 权值 logN 节点 主席

权值线段树

就是指线段树的叶子节点保存的是当前值的个数。

权值线段树一般支持以下三个操作:

  • insert

  • erase/remove

  • query

贴一个alphadalao的题解。


主席树

主席树,也叫做可持久化线段树,准确来说,应该叫做可持久化权值线段树,因为其中的每一颗树都是一颗权值线段树。

经典例题:查询区间第k小。

主席树是静态的。

为了实现可持久化,就要保存树的历史版本。最自然的想法当然是每进行一次修改,就新建一颗线段树,这样的空间复杂度显然是不能够接受的。通过观察不难发现,每次进行单点修改,发生变化的只有从叶子节点到根节点这一条链上的节点,换句话说,只有 \(logN\) 个节点发生了变化,而其他的节点都可以重用,没有必要新建。


看图非常好理解。

超棒的讲解

然后就是一些实现上的细节了。

  • 先建立不同的根,接下来只要修改 \(logN\) 个节点,查询从根节点开始即可。
  • 数组大约要开 \(MlogN+4logN\) 大小。

标签:持久,线段,笔记,学习,权值,logN,节点,主席
From: https://www.cnblogs.com/lxgswrz/p/18613601

相关文章

  • zkw线段树学习笔记
    先%一下zkw。stozkworzzkw线段树是一个改良版的线段树。其功能与传统线段树相同,也是用于维护区间信息。但是zkw线段树有很多优点:代码简短;纯天然非递归;常数小(尤其在差分区间更新时)特点:堆式储存,找父亲只需右移一位。建树和线段树一样,父节点左移一位为左儿子,再+1(或者|......
  • Linux 学习详细指南
    文章目录Linux学习详细指南1.基础知识准备计算机硬件与软件网络基础编程语言2.安装Linux发行版选择安装方式3.熟悉用户界面GUICLI4.学习基本命令文件系统命令用户与权限进程管理软件包管理5.深入学习Shell脚本编程系统管理安全性性能优化6.实践应用项目实践......
  • 奇绩创坛公开课第01课_创业走出第一步_陆奇:学习笔记
    写在前面背景:笔者已完整完成奇绩创坛官网上面的创业公开课,并且取得了结课证书。并且在2024年12月份参加了奇绩在我们学校的线下公开课。由于发现这些创业课程的质量很好,于是决定将学习笔记发布出来。一方面,对于学校里面的学生来说,这些经过萃取过的创业知识和方法论很有指......
  • Golang学习笔记_12——结构体
    Golang学习笔记_09——if条件判断Golang学习笔记_10——SwitchGolang学习笔记_11——指针文章目录结构体1.定义2.访问&&修改3.零值初始化&使用指针初始化4.匿名字段和嵌套结构体5.结构体方法和接收者源码结构体Go语言中的结构体(struct)是一种复合数据......
  • 代理 mitmproxy Python启动时,配置 block_global 参数,使用笔记(三)
    代理mitmproxyPython启动时,配置block_global参数,使用笔记(三)为什么要加block_global=false?,若不加,则只能本地拦截,而移动设备,或非本机请求时则无法被拦截将报错如下:Clientconnectionfrom192.167.6.166killedbyblock_globaloption注意:使用Python的非命令行启动,之前的......
  • gcc&linux静态库&动态库学习
    目录一、gcc1.gcc编译器流程2.gcc编译程序3.gcc常用参数4.多文件编译5.gcc和g++二、linux静态库和动态库1.静态库1.1生成静态链接库1.2静态库制作举例1.2.1准备测试程序1.2.2生成静态库1.3静态库的使用2.动态库2.1生成动态链接库2.2动态库制作2.3动态库的......
  • 学习Python第三天
    第一课:Python中的注释一、什么是注释:是指程序员在代码中对代码功能解释说明的标注行文字,可以提高代码的可读性。注释的内容将被Python解释器忽略,不被计算机执行。二、注释的分类:单行注释:以“#”作为单行注释的符号,作用范围内从“#”开始直到换行为止;多行注释:Python中并没有单......
  • 阅读笔记
    技术深度与广度在《程序员修炼之道》中,作者强调了程序员在技术深度和广度上的均衡发展。技术深度意味着对某一领域技术的深入理解和熟练掌握;而技术广度则要求程序员了解多个技术领域,以便在解决问题时能够灵活应用。深入掌握核心技能:书中提到,程序员应该深入掌握至少一种编程语言......
  • DL00336-基于多种机器学习模型的新能源电池寿命预测完整代码含数据集
    随着新能源技术的迅速发展,电池作为核心组件在电动汽车、储能系统等领域的应用日益广泛,电池寿命预测成为关键技术之一。传统的电池寿命预测方法依赖于物理模型和经验公式,但这些方法无法有效应对电池老化过程中的复杂性与非线性特征。机器学习,尤其是基于多种模型的集成方法,能够从大......
  • 【机器学习】机器学习:驱动个性化服务行业的新引擎
    驱动个性化服务行业的新引擎前言用户画像构建:机器学习驱动下的精准描绘个性化推荐系统:机器学习的实战应用个性化推荐系统的基本框架基于内容的推荐深度学习在推荐系统中的应用机器学习在个性化服务中的挑战与应对策略数据隐私与安全算法偏见与公平性应对策略与最佳实......