『学习笔记』可持久化线段树(主席树)
主席树的最基础的操作就是查询历史版本区间第 kkk 大,带修。 这个问题的基础解决思路:对于每次修改都建一棵权值线段树,显然空间开不下。 这时可持久化线段树的思路就应运而生了。 主要思想: 不难发现,每次修改只会有一条链上的值发生改变,所以我们不需要建出整棵新树,只需要把新建那条链上的点即可。 所以空间就是 nlognn\log nnlogn 的。 我们还要在权值线段树上做个前缀和来方便查询,每次查询时,就是在权值线段树上二分的过程。 注意到我们要建的是权值线段树,所以要对输入的值做一个离散化。 不多说了,直接贴代码吧。 code:code:code: mark#include...
more...