![](https://img-blog.csdnimg.cn/2020081509231117.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
主席树
可持久化线段树 - 主席树习题总结
Gene_INNOCENT
Wait for the sunrise!
展开
-
【POJ 2104】【主席树模板题】K-th Number
题意: 静态询问区间第K大问题。给出一个数组,然后多次询问某一区间第K大数是多少。 思路: 典型的主席树模板题。 所以就大致讲一下静态主席树的原理。 先回顾一下权值线段树,每个节点维护一个sum,表示数组中有多少个点在这个节点所代表的左右区间内,这样就可以求出全局第k大问题。 那么主席树就是建立多棵线段树,第i个线段树维...原创 2018-10-21 15:47:26 · 364 阅读 · 0 评论 -
【动态主席树】ZOJ 2112【树状数组+主席树】
题意: 给定一个区间,求这个区间第k小的数,支持单点修改。 思路: 动态主席树裸题。 我们先来回顾一下静态主席树的做法,对于数组中每一个位置都维护一棵权值线段树,该权值线段树保存的是区间 [1,x] 的信息。因此我想要求区间 [l,r] 之间第k大的时候,只需要将root[r]-root[l-1]就是维护区间 [l,r] 信息的权值线段树,因此就可...原创 2018-11-18 11:51:36 · 331 阅读 · 0 评论 -
【ZOJ 4053】【青岛网络赛主席树+启发式合并】
题意: 给你一个数组,每次给你一个数,将这个数从整个数组中删去。然后数组被划分成了多个小区间,问你各个区间中最大的逆序对是多少。 思路: 首先建立一颗主席树维护区间[1,x]的信息。 然后用set来进行启发式合并。就是将各个小区间的左端点存入set中,当你需要求出点x在哪个小区间中的时候。只需要在set中进行二分即可找到x所在的区间。 ...原创 2018-11-18 12:09:46 · 176 阅读 · 0 评论 -
【2019南昌邀请赛网络赛 J】Distance on the tree【边权树剖+主席树】
题意: 给定一棵nnn个节点的树,每条边都有一个权值,mmm次查询,每次询问树上两点路径上边权小于kkk的边有多少条?(1≤n,m≤105)(1\leq n,m\leq 10^5)(1≤n,m≤105) 思路: 比较裸的题目,可以离线操作,然后将询问值从小到大进行排序,然后每次单点修改,将比当前询问小的边加入树中。 此处需要注意是边权树剖,因此将每条边的权值压到深度更深的节点上,然后树剖路径查询...原创 2019-04-24 11:36:35 · 196 阅读 · 0 评论 -
【SPOJ - DQUERY】D-query【主席树 —— 区间中不同数的个数】
题意: 长度为nnn的序列,qqq次询问,每次给出lll、rrr,返回序列[l,r][l,r][l,r]中不同数的个数。(1≤n≤3∗104,1≤q≤2∗105)(1\leq n\leq 3*10^4,1\leq q\leq 2*10^5)(1≤n≤3∗104,1≤q≤2∗105) 思路: 与之前主席树的权值线段树思路不同,此题的思路是建立nnn颗线段树,第iii颗线段树存储区间[1,i][1,...原创 2019-04-24 16:17:33 · 1457 阅读 · 0 评论