可持久化数据结构
文章平均质量分 54
林中的亮光
沉着冷静淡定
展开
-
可持久化线段树(二) 例题篇(待补充)
1.数数肉眼可见的裸题,唯一需要思考的地方就是如何确定范围,不妨如此思考,我们已经知道寻找第k小数的方法,那么我们不妨先朴素的想:枚举区间第1小,第二小。。。。看看到哪都比H小,不就是这题的答案吗,因此,利用单调性,不妨使用二分法,确定端点,就是答案了。代码如下:#include<iostream>#include <cstdio>#include <algorithm>#include <vector>using namespace s.原创 2022-03-03 10:07:40 · 258 阅读 · 0 评论 -
可持久化线段树(一)
对于主席树,先说说个人理解(待补),相当于空间换取时间,只有数据范围不是那么大的时候才能使用一般开的空间为 N *4 + N *log N;具体实现的操作就是先copy一个原版本,之后再进行修改操作,再使用递归pushup上去,就完成了新版本的建立。 下面这道题,就是目前本人学到的主席树的第一个操作----查询定区间第k小的值,下面说说本人的理解。1.为什么可以使用可持久化线段树?试想一个问题,如果我们有方法 维护 落在 从小到大 【a,b】值域区间范围内的值的个数(初始化为0),那...原创 2022-03-02 22:14:25 · 377 阅读 · 2 评论 -
可持久化trie树
https://blog.csdn.net/weixin_43959739/article/details/84922554详情可以看这一篇,或者李煜东老师的书p253.下面来介绍一下本人理解的 建立可持久化trie树的过程。1.创建新版本的时候什么时候和之前版本的节点发生关系?私以为,不妨以下图为例,具体来说,就是将当前版本与之前版本都从根节点出发,将当前版本该节点出发没有,之前版本有的一些信息进行连接,很好理解,因为最新版本相当于目前所有版本的总和因此之前的信息就通过这种方式维护原创 2022-03-02 15:43:33 · 606 阅读 · 0 评论