数据结构
文章平均质量分 54
数据结构部分的学习笔记
Texcavator
会慢慢慢慢慢慢学会的!
展开
-
【数据结构】ST表 - 模板总结
下方代码预处理区间最大值 可根据题目意思修改。原创 2024-09-07 15:38:27 · 141 阅读 · 0 评论 -
【数据结构】树状数组 - 模板总结
【代码】【数据结构】树状数组 - 模板总结。原创 2024-09-07 15:22:46 · 144 阅读 · 0 评论 -
pbds库
实测CF上需要开C++23才能通过编译。原创 2024-09-02 20:12:13 · 761 阅读 · 0 评论 -
【数据结构】吉司机线段树
【代码】【数据结构】吉司机线段树。原创 2024-09-02 19:30:08 · 430 阅读 · 0 评论 -
【数据结构】带修莫队
中我们探讨了莫队的基础应用,但我们知道,莫队是个离线算法,需要读入所有询问才能进行处理,那如果遇到在线修改、但不需要在线输出的问题,我们有没有办法用莫队解决呢?,普通的莫队我们只记录下当前的左右端点,和当前询问的左右端点进行比较,对于带修改的问题,我们只需要多记录一个时间戳。原创 2024-05-23 13:03:55 · 417 阅读 · 0 评论 -
【数据结构】可并堆 / 左偏树
左偏树也叫可并堆,那么首先它具有堆的性质(大跟堆/小根堆),同时又有左偏性质,什么叫左偏呢?我们把没有左儿子或者没有右儿子的结点叫做外结点,dist表示每个结点到距离最近的外结点的距离(特殊的,外结点的dist是 -1)左偏的意思就是每个结点的左儿子的dist总是比右儿子大怎么保证合并时的时间复杂度呢?因为每个结点的左儿子的dist总是比右儿子大(可以感性理解为左边比右边深度大),这样每次合并的时候我们总是合并到右结点上,时间复杂度就不会很高(因为我是个数学蒟蒻所以就不证明了)原创 2024-04-09 16:37:30 · 527 阅读 · 0 评论 -
【数据结构】可持久化平衡树(单点+区间)(FHQ-Treap版)
数组记录每个版本的根结点即可。和主席树类似,开一个。原创 2024-04-08 12:08:10 · 298 阅读 · 0 评论 -
【数据结构】FHQ-Treap
/ 分别表示根结点编号和当前用到哪个结点int val[N];// 结点权值int pri[N];// 结点优先级int sz[N];// 结点子树大小// 结点左右儿子fhq-treap依然是一棵中序遍历按照val排序的平衡树,但是它的结构依赖于pri优先级,一个结点的两个儿子的pri一定比这个结点要小,然后我们随机取pri,就可以保证treap基本平衡。原创 2024-04-08 08:43:01 · 362 阅读 · 0 评论 -
树形数据结构debug中发现的错误合集
pushup 操作中,更新当前结点 u,必须完全使用它的两个子结点,不可以还保留原来的信息(比如说取最大值时,不可以还保留原来结点 u 的最大值),因为 pushup 说明线段树已经做出修改了,使用原来的信息就无视了此次修改了原创 2024-02-06 13:32:08 · 431 阅读 · 0 评论 -
【数据结构】单调栈
单调栈用来查找比当前元素大的第一个元素(可以修改成比当前元素小的第一个元素)要注意下方代码中栈中存的是下标不是值。原创 2024-02-14 21:53:34 · 635 阅读 · 0 评论 -
【数据结构】单调队列
简单来说就是维护一个 deque,deque 的队头是当前最小值的序号,其余所有元素都是之后可能成为最小值的元素的序号(只有可能成为最小值,元素的序号才会存在于队中)单调队列的作用是:给定一个长度为 n 的数组,维护长度为 m 的区间最大/小值。(下面以维护区间最小值为例,最大值相反)原创 2024-01-31 10:26:51 · 689 阅读 · 0 评论 -
【数据结构】Splay树 + 文艺平衡树
就是一个长这样的树,树中每个结点都有一个父结点(除了根结点没有父结点)和最多两个子结点,每个结点的左儿子一定比它小,右儿子一定比它大。这棵树的先序遍历很容易知道就是:1 2 3 4 5 6 7 (根左右)我们还可以从另一个角度理解先序遍历:把整棵树映射到 x 轴上,也就是把它压扁也就是这样:先序遍历从左到右读出来就可以了。原创 2024-01-22 14:31:03 · 1146 阅读 · 0 评论 -
【数据结构】树套树
(本部分未学完。原创 2024-01-22 01:41:06 · 495 阅读 · 0 评论 -
【数据结构】可持久化线段树(主席树)
即为,是一种可以记录每一个修改版本的数据结构。难以进行区间的修改操作主席树存储的信息下面以图示表示主席树记录修改的过程。原创 2024-01-20 08:27:40 · 1086 阅读 · 0 评论 -
【数据结构】普通treap
【代码】【数据结构】平衡树。原创 2024-01-18 10:10:08 · 588 阅读 · 0 评论 -
【数据结构】莫队
这种排序方法也可以接着优化:如果左端点在同一奇数块内,则按右端点从小到大排序,如果左端点在同一偶数块内,则按右端点从大到小排序,这样排序是为了减少右端点移动的次数进而提高效率)上文介绍了如何往区间内添加数,当然,删除一个数的操作也是类似的,只不过添加数时,我们要先看被添加的数有没有出现在原来的区间里,也就是。题目意思是,给出一个数组a,再给出多个区间,问这些区间里分别有多少不一样的数字。个块,然后按照左端点所在的块排序,如果左端点在同一个块内,则按右端点排序。,元素7不存在于原来的区间里,因此元素种类数。原创 2023-09-29 21:16:06 · 271 阅读 · 0 评论 -
【数据结构】ST 表与 RMQ 算法
我们知道,求一个数组的最大值(比如说长度为10的数组),我们可以先求前六个数的最大值,再求后七个数的最大值,最后求这两个最大值的最大值,虽然这中间有重复的元素,但是对最终的最大值结果不会有影响,这就叫做可重复贡献问题。但是如果我们要求一个数组中所有元素的和(还是比如说长度为10的数组),我们就不能用前六个元素的和加上后七个元素的和了,这就叫做不可重复贡献问题。,只要找到这两个区间的最大值,再取最大值,就可以得到整个区间的最大值了。这时可重复贡献的性质就发挥作用了,我们把要查询的区间。,这样解出x,会发现。原创 2023-10-25 19:36:38 · 376 阅读 · 0 评论 -
【数据结构】线段树
算法提高课笔记原创 2023-10-10 11:09:33 · 283 阅读 · 0 评论 -
【数据结构】树状数组
这两个操作的时间复杂度都是O(logn)根据前缀和的原理,任意一段区间求和都可以转换成两个前缀和的差,因此区间求和问题转换成求前缀和问题。原创 2023-07-16 12:09:58 · 183 阅读 · 0 评论 -
【数据结构】并查集
首先所有元素各为一个集合,创建数组 p[i],意为 i 的父结点,起初,p[i] 全部等于 i。今天补题遇到了这个知识点,能想到这个方法但是自己没办法实现,所以来复习一下相关知识做个总结~并查集,简单来说,就是合并两个集合,然后能迅速判断两个元素是否在同一集合中。返回 x 的祖先结点,同时进行路径压缩,让 p[x] 直接指向祖先结点。原创 2023-07-10 23:34:06 · 57 阅读 · 1 评论