首页 > 其他分享 >线段树专题复习

线段树专题复习

时间:2023-10-04 16:12:11浏览次数:32  
标签:专题 复习 线段 查询 修改 区间 我们

今天的主题是线段树专题复习!
(什么?是昨天的?不听不听,只要我不说都不知道我鸽了一天!)
好了,言归正传,我们来看一下今天的知识点们吧。

Part 1 线段树自己

不想讲了,想看的移步其他博客
想看踢我,今天没时间了

Part 2 一些优化

ZKW线段树

俗称重口味线段树,是一种不用递归实现的线段树,常数和码量均远小于其他线段树,居家旅游良选
其实现原理利用了满二叉树的一些非常优美的性质,比如第 \(M+i\) 个结点在这个结构中一定代表第 \(i\) 个数字,将编号左移一位是父亲,异或以后是兄弟的美好特质,所以我们更新可以从底下向父亲更新,省去了向下的时间与空间。
代码示例:
单点修改

d[p=M+i]=value;
while(p<<=1) d[p]=d[p>>1]+d[p>>1|1];

而区间查询与以往有所不同,我们将查询\([i,j]\)的任务转化为查询\((i-1,j+1)\)的内容,然后结合图像: image
假设我们现在要查询\([2,3]\)的和,我们便将其变为\((1,4)\)的和。
我们先找到1,4所对应的点,然后判断:
如果左端点对应着左儿子,则他的兄弟一定在区间内;右端点同理。这个时候异或找兄弟的好处就出来辣!log完美解决。
那么如果我们要区间修改要怎么办呢?我们提供两种方式。第一种,像普通线段树一样打上lazy标记。但这种我们一般不用,因为在非递归的情况下是极其麻烦的,具体可以移步度娘学习。
我们一般采取标记永久化的方式。
和区查一样,我们可以log地求出哪些点所在区间被我们所要修改的区间所包含。所以我们可以自下而上的以同样方法再来一遍。这个时候我们还需要记录我们在这里实际修改的值,方便打tag。查询的时候直接查就好辣!
强推。(主要是码量小的离谱)
缺点:部分操作有点麻烦,比较难以理解。对性质有部分要求(详见度娘)

空间回收

对于卡常的动态开点线段树有奇效。
也很简单,比如在合并线段树后,我们可以遍历一遍消失的线段树并把点重置后塞进一个栈里面,下次直接在栈里面取点而不是cnt++,节约大量空间。

其他想到再说。

标签:专题,复习,线段,查询,修改,区间,我们
From: https://www.cnblogs.com/wwzzhhone/p/xianduanshu.html

相关文章

  • 算法:线段树
    算法:线段树哦吼!终于来学线段树啦~~拖了好久都没有敢学,主要是基础知识点不熟,代码能力太弱。但是现在已经是时候了。来看:线段树(SegmentTree)几乎是算法竞赛最常用的数据结构了,它主要用于维护区间信息(要求满足结合律)。与树状数组相比,它可以实现\(O(log⁡\n)\)的区间修改,......
  • 软件安全复习材料自用版本
    名词解释SQ:软件质量SQA:软件质量保证SA:软件保障SDS:软件定义安全VPN:虚拟专用网0day漏洞:已被发现但是官方还没有补丁的漏洞1day漏洞:官方发布补丁后大部分用户还未打补丁时的漏洞,仍然具有可利用性历史漏洞:距离补丁发布日期遥远且可利用性不高的漏洞CVSS:通用漏洞评分系统CVE:通用漏洞和......
  • 我个人今年csp/noip赛前复习列表:
    Part1、图论:1*、3种tarjan2、dij算法:暴力写法和heap优化3*、Prim算法:暴力与heap优化4、Floyd算法+矩阵5、直径求法(dp+dfs)与性质6、树的重心(dp求法)7*、差分约束系统建模方式8*、二分图相关问题9*、Dinic算法板子(骗分)10、基环树的一些常见写法(估计不会考)Part2、数据结构:......
  • 线段树优化建图
    一个很好用的\(trick\)。我们通过例题CF786B为例。他需要我们支持点之间连边,点和区间之间连边,区间和点之间连边。支持最短路。如果我们暴力连边,显然最多是有\(n^2\)条边的。那怎么办呢,引入线段树分治。线段树分治在某些题中,我们可能会用\(v\tou\in[l,r]\)这种一个......
  • 线段裁剪:Cohen-Sutherland算法
    目录裁剪算法Cohen-Sutherland线段裁剪算法基本思想具体步骤计算分析程序代码裁剪算法计算机内部存储的图形数据量通常较大,而屏幕只显示其中一部分,因此需要确定哪些部分在显示区域内,哪些在显示区域外。这个过程称为裁剪(clipping)。裁剪是二维观察(三维观察)的重要部分,参见计算机图......
  • 关于form表单的复习
    今天写代码的时候正好到了需要前后端交互的时候了,结果发现自己form表单遗漏有点严重,所以写个随笔给自己记一下。主要是复习表单元素首先是input标签, input标签使用很广泛,通过type属性的不同值,来表现不同的形态。1)type="text" 文本框,里面文字可见,相对应的就是type="password"......
  • CTFer成长记录——CTF之Web专题·[SWPUCTF 2021 新生赛]jicao
    一、题目链接  https://www.nssctf.cn/problem/384二、解法步骤  审计代码:  只需POST传入id=wllmNB,GET传入json=json_encode(array('x'=>'wllm'))即可。  payload:?json={"x":"wllm"},利用hackbar,POST传入id=wllmNB。  拿到flag:三、总结  基本操作。 ......
  • 权值线段树 学习笔记
    8月集训学了权值线段树,当时没怎么加强训练。国庆刚好开始有时间,巩固巩固。补上学习笔记。首先介绍权值树。其本质是一个记录每个数出现次数的线段树,也就是由桶建成的树。接下来介绍各种操作。1.插入。由于统计的是出现次数,从这个数往上依次加1即可。voidinsert(intx,int......
  • 复习课12 选择语句与循环语句
    一.选择语句为了更好的讲解选择语句我们举一个例子:如果我们在学校认真学习则可以在考试时取得好的成绩,反之分数取得的成绩就会不理想,那么我们如何在程序中让用户选择是认真学习还是不认真学习,并返回相应的结果呢?以下是一段示例代码:#define_CRT_SECURE_NO_WARNINGS1#include<stdi......
  • 【专题】2022中国新能源汽车发展趋势白皮书报告PDF合集分享(附原数据表)
    报告链接:http://tecdat.cn/?p=31861新能源汽车市场从政策推动到市场驱动的转变过程中,行业也在经过了一个萌芽期和初期的探索期之后,步入了一个迅速发展的时期。此外,在科技力量的加持下,品牌、车型、区域等细分领域都在持续地进行着调整,行业格局已经初具规模,在持续的创新中,产业已经......