P3834 【模板】可持久化线段树 1(主席树) Description 如题,给定N个整数构成的序列,将对于指定的闭区间查询其区间内的第K小值。 Input 第一行包含两个正整数N、M,分别表示序列的长度和查询的个数。 第二行包含N个整数,表示这个序列各项的数字。 接下来M行每行包含三个整数l,r ...
分类:
其他好文 时间:
2019-11-11 09:15:06
阅读次数:
102
P3834 【模板】可持久化线段树 1(主席树) ...
分类:
其他好文 时间:
2019-11-04 13:52:04
阅读次数:
58
主席树静态序列查区间第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
主席树是 以前缀和形式基于权值线段树建立的可持久化线段树,可持久化指的是它保存了这棵树的所有历史版本. 最简单的办法是:如果你输入了n个数,那么每输入一个数字a[i],就构造一棵保存了从a[1]到a[i]的权值线段树,由于只增加了logn的节点数,我们增加改变的节点并将没有改变的子树指向该节点,这样 ...
分类:
其他好文 时间:
2019-11-03 16:23:53
阅读次数:
94
特点 老师说,可持久化线段树一个重要的特点就是,它的询问都是单点询问... 先记这....等我做多了题目之后再补充 李超线段树 用于维护若干个一次函数的最值 核心思想就是标记永久化, 线段树每个节点维护在该区间中点取值最大的线段,查询时求一条从上到下的链上log个线段的最值。 ————一位大佬Fla ...
分类:
其他好文 时间:
2019-11-03 11:07:21
阅读次数:
92
距离CSP2019只有不到二十天了……就简单说说,然后贴个代码吧 可持久化线段树,又名主席树(因为提出这个数据结构的人叫hjt) 可持久化,即为可以追溯某个历史版本 模板 你需要维护这样的一个长度为 N 的数组,支持如下几种操作 在某个历史版本上修改某一个位置上的值 访问某个历史版本上的某一位置的值 ...
分类:
其他好文 时间:
2019-10-26 17:15:27
阅读次数:
71
可持久化数据结构 可持久化线段树 据说这个东西是$hjt$发明的(不是国家领导人 由于上句所述原因,又称主席树. 这个东西有啥用呢? 支持历史版本的查询. 这有啥用?~~出题考你~~ 实现历史版本查询的一个朴素想法是: 对于每一个版本都建一棵线段树,开桶记录根节点,每次对应查询即可. 这样的正确性是 ...
分类:
其他好文 时间:
2019-10-10 20:22:36
阅读次数:
105
1、有关树剖 我们经常用线段树/树状数组来维护一个区间,并进行修改(如区间加、区间乘,区间赋值,区间开方等)和求值(最值、和、积、颜色个数等)的操作,在这基础上还有可持久化线段树等进阶操作,也可以通过套起来成了维护二维面的二维线段树,这都是可以的。 但是,有的时候我们需要去维护一颗树,进行路径上和子 ...
分类:
其他好文 时间:
2019-10-05 12:38:57
阅读次数:
87
2019.10.1 UOJ Easy Round #1 A:一开始就想偏了,从不等式角度来看,其实就是一个均值不等式。 B:字典树水题,记录一个指针指向真正的目录即可。 C:可撤销并查集+离线算法。 顺便学习了一下可持久化并查集,就是一个按秩合并的可持久化数组(用可持久化线段树实现即可)。 ...
分类:
其他好文 时间:
2019-10-01 20:54:39
阅读次数:
104
权值线段树 顾名思义,就是以权值为下标建立的线段树。 现在让我们来考虑考虑上面那句话的产生的三个小问题: 1. 如果说权值作为下标了,那这颗线段树里存什么呢? ————— 这颗线段树中, 记录每个值出现的次数 2.权值很大怎么办?数组空间不够啊 ————— 可以先离散化,再记录 3.那权值线段树到底 ...
分类:
其他好文 时间:
2019-10-01 18:54:58
阅读次数:
82