![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构-主席树
Maxwei_wzj
AFO
展开
-
【POJ2104】K-th Number-主席树(可持久化线段树)+离散化
【POJ2104】K-th Number-主席树(可持久化线段树)+离散化原创 2017-03-14 18:43:29 · 397 阅读 · 0 评论 -
【BZOJ4408】神秘数(FJOI2016)-主席树+贪心
测试地址:神秘数 题目大意:定义一个集合的神秘数,为不能用其某个子集的和表示的正整数中最小的数,给定一个长为nnn的序列AAA,mmm次询问,每次询问某个区间的神秘数。n,m≤105,∑Ai≤109n,m≤105,∑Ai≤109n,m\le 10^5,\sum A_i\le 10^9。 做法:本题需要用到主席树+贪心。 考虑只有一个询问时要怎么做。首先,将AiAiA_i从小到大一个个加入集合...原创 2018-06-13 21:00:43 · 243 阅读 · 0 评论 -
【BZOJ3545/BZOJ3551】Peaks(ONTAK2010)-Kruskal重构树+主席树
测试地址:Peaks原版,Peaks加强版 题目大意:一张n(≤105)n(≤105)n(\le 10^5)个点m(≤5×105)m(≤5×105)m(\le 5\times 10^5)条边的无向图,点和边都有权,q(≤5×105)q(≤5×105)q(\le 5\times 10^5)个询问,每次询问从一个点vvv能仅通过走边权不超过xxx的边走到的所有点中,第kkk大的点权。原版不强制在线,...原创 2018-06-08 13:08:17 · 282 阅读 · 0 评论 -
【BZOJ5417】你的名字(NOI2018)-后缀自动机+主席树
测试地址:你的名字 做法:本题需要用到后缀自动机+主席树。 首先考虑l=1,r=|S|l=1,r=|S|l=1,r=|S|的情况。考虑TTT的每个前缀的贡献,我们需要找到它最短的没在SSS中出现过,而且没在TTT的前面部分出现过的后缀,这样包含它的所有后缀就都是合法的贡献了。显然这个后缀的长度等同于,在SSS中出现过或者在TTT的前面部分出现过的最长的后缀的长度加111。因此我们分开考虑两种情...原创 2018-08-10 13:03:04 · 861 阅读 · 0 评论 -
【BZOJ5319】军训列队(JSOI2018)-主席树+二分
测试地址:军训列队 做法:本题需要用到主席树+二分。 首先可以证明,最好的匹配方法是,按照区间内权值顺序从小到大依次匹配[K,K+r−l][K,K+r−l][K,K+r-l]。证明如下: 假设区间内有两个数x<yx<yxi+1i+1i+1和iii,那么: 当x<y≤ix<y≤ixi+1≤x<yi+1≤x<yi+1\le xx≤i<i+1≤yx≤i&...原创 2018-08-16 21:23:32 · 252 阅读 · 0 评论 -
【BZOJ2653】middle-二分答案+主席树
测试地址:middle做法: 本题需要用到二分答案+主席树。神仙题。很久以前Mychael大佬称这题和TJOI那个排序差不多,于是二分答案那一步想得特别顺畅,结果却卡在简单主席树…菜爆,估计退役稳了。首先看到这个题和数的大小有很大关联,想到二分答案,那么现在要解决的问题就是,如何判断最大的中位数和midmidmid的大小关系?我们发现,若存在一个满足题目要求的区间,使得区间中≥mid\ge...原创 2018-10-18 15:05:25 · 230 阅读 · 0 评论 -
【BZOJ1146】网络管理(CTSC2008)-树状数组+主席树
测试地址:网络管理做法: 本题需要用到树状数组+主席树。经典的带修改树上路径第kkk大问题,不过我太菜了居然忘了有树上主席树这个东西…不带修改的话能用树上主席树做,那么带修改怎么办呢?因为一次修改会影响一棵子树上的所有线段树,所以我们还是把树拍成DFS序,就变成区间修改了。注意到查询的时候只是查单棵线段树,因此可以运用差分的方法,把上述操作变成单点修改,前缀和求和,这个就用树状数组套主席树(...原创 2018-10-16 10:30:47 · 185 阅读 · 0 评论 -
【BZOJ3123】森林(SDOI2013)-树上主席树+启发式合并
测试地址:森林 做法:本题需要用到树上主席树+启发式合并。 如果树的形态固定,那么求路径第kkk大,我们想到用主席树。求区间的第kkk大我们是在序列上建主席树,每棵线段树代表一个前缀和,那么求路径的第kkk大,类比序列的前缀和与树上前缀和的转化,我们可以在树上建主席树,每棵线段树代表从一个点到根路径上的信息,这样我们就可以通过x+y−lca(x,y)−fa(lca(x,y))x+y−lca(x...原创 2018-05-30 17:11:07 · 241 阅读 · 0 评论 -
【BZOJ4539】树(HNOI2016)-主席树+LCA
测试地址:树 做法:本题需要用到主席树+LCA。 要求两点间的距离,显然要维护每个点的深度,以及要求两个点的LCA。 我们把一开始的树看成一块,然后每次操作,都是在某一块下面挂一个新的块,每个块都是模板树的一棵子树。这样我们可以先把块缩成点,那么缩块后整棵大树就变成了一棵更小的树。考虑求一个点的深度,这个深度等于它到它所在块的根的距离,加上块根到整棵树根节点的距离,显然前面的部分可以直接在模...原创 2018-05-29 15:49:11 · 258 阅读 · 0 评论 -
【HDU4348】To The Moon-主席树(可持久化线段树)区间修改+区间询问
【HDU4348】To The Moon-主席树(可持久化线段树)区间修改+区间询问原创 2017-03-15 11:28:33 · 649 阅读 · 0 评论 -
【ZOJ2112】Dynamic Rankings-树状数组套主席树+离散化
【ZOJ2112】Dynamic Rankings-树状数组套主席树+离散化原创 2017-03-15 18:46:13 · 568 阅读 · 0 评论 -
【SPOJ3267】D-query-主席树应用
【SPOJ3267】D-query-主席树应用原创 2017-03-25 18:30:41 · 443 阅读 · 0 评论 -
【NOI2010T2】超级钢琴-主席树+优先队列
【NOI2010T2】超级钢琴-主席树+优先队列原创 2017-09-11 21:58:29 · 307 阅读 · 0 评论 -
【CF893F】Subtree Minimum Query-主席树
测试地址:Subtree Minimum Query 题目大意:给定一棵有根树,每个节点有一个权值,现在有若干个询问,每个询问给出x,kx,kx,k,表示询问以xxx为根的子树中,与xxx的距离不超过kkk的点中最小的权值。强制在线。 做法:本题需要用到主席树。 首先询问子树我们肯定想到将点按DFS序排序,然后每个询问就是要求点在DFS序中编号在[l,r][l,r][l,r],深度在[dep...原创 2018-03-12 22:17:06 · 374 阅读 · 0 评论 -
【LuoguP4137】区间mex-主席树
测试地址:区间mex 做法:本题需要用到主席树。 看到本题是离线的,很多同学想到了很显然的莫队做法,或者一些奇奇怪怪的离线做法,但实际上在线做法是有的:主席树。 考虑转换条件,我们要求最小的在一个区间中没出现过的自然数,如果把原数列看做往一个空序列中一个一个插入元素,那实际上我们找的就是在某段时间内没有被插入过的最小的元素。考虑按照权值建线段树,对于每个线段树中的区间,我们存储这个区间中最久...原创 2018-03-28 17:56:10 · 885 阅读 · 0 评论 -
【BZOJ4571】美味(SCOI2016)-主席树+贪心
测试地址:美味 做法:本题需要用到主席树+贪心。 考虑一次询问,要使bi xor (aj+xi)bi xor (aj+xi)b_i\space xor\space (a_j+x_i)最大,我们从高位向低位贪心,我们知道涉及的询问是:将每个数按二进制位从高位到低位写出,对于某一个前缀,询问存不存在异或bibib_i后满足前缀为当前前缀的aj+xiaj+xi...原创 2018-05-05 22:31:42 · 241 阅读 · 0 评论 -
【BZOJ4556】字符串(TJOI&HEOI2016)-后缀数组+二分+RMQ+主席树
测试地址:字符串 做法:本题需要用到后缀数组+二分+RMQ+主席树。 注意到要求s(a,b)s(a,b)s(a,b)的每个子串和s(c,d)s(c,d)s(c,d)的LCP最大值,其实就是求s(a,b)s(a,b)s(a,b)的每个后缀和s(c,d)s(c,d)s(c,d)的LCP最大值。要求LCP我们通常要先对字符串求出后缀数组,然后在heightheightheight上做RMQ,可以做到...原创 2018-05-14 16:51:28 · 228 阅读 · 0 评论 -
【BZOJ5343】混合果汁(CTSC2018)-二分答案+主席树
测试地址:混合果汁 做法:本题需要用到二分答案+主席树。 注意到,如果一个最小美味度为ddd的混合果汁可以配出,那么最小美味度<d<dddd,问题转化成判定性问题。 判定的话也很简单,容易想到贪心选取最便宜的LLL升果汁,然后看它们的总价值,如果不超过GGG,就代表可以配出,否则就不能配出。那么我们可以按果汁的价值建线段树,每个区间维护区间内所有果汁的体积和与它们的价值总和,那么...原创 2018-05-21 10:09:32 · 339 阅读 · 0 评论