区间第K小查询 description 给定一个长度为$n$ 的序列,每次对于一个区间$[l,r]$ ,求出这段区间中第$k$ 小的数的值。 \(n\le 10^5\) solution 首先考虑全局怎么做,即询问区间为$[1,n]$ 时。 我们可以建立权值线段树,对于其上的区间$[l,r]$ 记下 ...
分类:
其他好文 时间:
2021-06-06 19:07:20
阅读次数:
0
1.可持久化线段树 又称主席树,因为发明这一算法的人的名字缩写为HJT。 主席树可以储存各个历史状态,如果用普通线段树,每个状态都是 4n 的,内存和时间开销极大,而主席树通过动态开点,先继承上一状态的左右儿子节点指针,再进行修改,每次修改的时间和空间都可以优化到 \(\log n\) 级别。 通过 ...
分类:
其他好文 时间:
2020-07-28 22:48:06
阅读次数:
88
题目链接:https://www.acwing.com/problem/content/258/ 题目给出长度为n的序列,操作有两种,求[p,n]段的异或和再与x的异或,或者增加一个数x,使用可持久化Trie和异或前缀和可以解决,但是需要在[l-1,r-1]区间内,右区间自然满足,左区间的话需要加上 ...
分类:
编程语言 时间:
2020-07-25 23:31:49
阅读次数:
75
很多人至今为止学到或者遇到的题目都是“维护数据结构的最新状态”之类的题目,当我们遇上“询问某一历史版本中balabala”,甚至要修改某一历史版本某一数值的题目时,我们便考虑可持久化数据结构。 可持久化数据结构是在基础的数据结构上记录每一次操作的历史版本来做到随时访问的目的。 在这一篇博客,我们要学 ...
分类:
其他好文 时间:
2020-05-26 18:24:23
阅读次数:
52
数据结构 1. 平衡树 2. 可持久化数据结构(主席树) 3. 莫队 4. LCT 5. 分治(点分治 + CDQ) 6. 树套树 DP 1. 后效性处理之高斯消元 2. 决策单调性 3. 树形DP(换根,倍增) 字符串 1. KMP(fail树,DP) 2. AC自动机 3. Trie(可持久化T ...
分类:
其他好文 时间:
2020-01-30 09:22:00
阅读次数:
95
写在前面: 初探多项式之后,开始了数据结构之旅,可持久化数据结构的总结大概是咕了,只总结一些$LCT$的题 T1:水管局长数据加强版 发现题中只有删边操作,而我们只会做加边,所有考虑时光倒流 先在最后时刻作出最小生成树,之后$LCT$维护最大值不断$link,cut$加边删边更新答案即可 T2:GE ...
分类:
其他好文 时间:
2019-12-22 11:01:38
阅读次数:
102
然而好像没有平衡树 还是题解包: T1:森林 树上主席树+启发式合并。 然而好像知道标签就没啥了。在启发式合并时可以顺手求lca 然而这题好像可以时间换空间(回收空间) T2:影魔 难点在于考虑贡献的来源 考虑一个区间两端点和区间最值(不含端点)的关系 小,中,大:贡献p1 大,小,大:贡献p2 大 ...
分类:
其他好文 时间:
2019-12-19 09:48:03
阅读次数:
83
主席树静态序列查区间第k大 struct tree{ int l,r,sum; }t[100010]; void change(int &now,int pre,int l,int r,int k){ now=++cnt; t[now]=t[pre]; t[now].sum++; int mid=( ...
分类:
其他好文 时间:
2019-11-03 18:43:33
阅读次数:
119
可持久化数据结构 可持久化线段树 据说这个东西是$hjt$发明的(不是国家领导人 由于上句所述原因,又称主席树. 这个东西有啥用呢? 支持历史版本的查询. 这有啥用?~~出题考你~~ 实现历史版本查询的一个朴素想法是: 对于每一个版本都建一棵线段树,开桶记录根节点,每次对应查询即可. 这样的正确性是 ...
分类:
其他好文 时间:
2019-10-10 20:22:36
阅读次数:
105
并查集 树状数组 线段树 分块 点分治 二叉查找树与平衡树初步 离线分治算法 可持久化数据结构 总结与练习 ...
分类:
其他好文 时间:
2019-10-10 12:56:44
阅读次数:
81