![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
Michael_GLF
AFOing
展开
-
洛谷2617 Dynamic Rankings(主席树+树状数组)
传送门【题目分析】题意相当于动态维护区间第K大。静态第K大可以直接用主席树解决,对每个点处理出一个权值线段树的前缀和作减即可,然而涉及单点修改,他就咕了,因为不可能一棵一棵的去修改。因为这个地方是单点修改,区间查询,所以可以想到树状数组这个东东上去。所以这个就变成了一个树状数组套权值线段树,即树状数组每个节点维护一棵权值线段树,区间查询就是合并区间[l,r]的线段树的信息。考虑...原创 2019-02-03 19:15:33 · 298 阅读 · 0 评论 -
洛谷3302 【SDOI2013】森林(主席树+启发式合并)
传送门【题目分析】主席树好题,感谢wcr神犇的讲解。题意很简单,维护树上路径第k小,将两个块联通,所以自然想到LCT或者主席树。好像有人用主席树+LCT过了这道题但我不会啊所以老老实实写主席树吧。用主席树来维护当前点到所在树的根节点的信息,最后统计的答案就是在x->lca->y的路径上进行统计就行了。考虑到动态加边这种东东,反正我不知道怎么用树剖做,所以就用...原创 2019-01-24 20:44:36 · 155 阅读 · 0 评论 -
洛谷2839 【国家集训队】middle(主席树+二分)
传送门【题目分析】氵谷第二道黑题唉qwq思想很巧妙,对于一个数x,将区间[l,r]中比他大的数赋为1,比他小的数赋为-1,那么判断一个数是否大于等于中位数就等价于了区间和是否大于等于0。所以这个性质就可以应用到二分答案上,每次check(mid)的时候直接判区间和是否大于等于0。然后考虑如何维护这个区间和,首先发现可以将所有的1和-1的主席树建出来,因为后一个主席树只会在前一个...原创 2019-01-24 11:06:07 · 196 阅读 · 0 评论 -
洛谷3919 【模板】可持久化数组(主席树)
传送门【题目分析】板子题不想写题解(我已经被SDOI染色恶心死了)。。。直接看代码即可。【代码~】#include<bits/stdc++.h>using namespace std;const int MAXN=2e7+10;int n,q;int root[MAXN>>1],lc[MAXN],rc[MAXN],val[MAXN];int c...原创 2018-11-01 22:07:08 · 98 阅读 · 0 评论 -
洛谷3834 可持久化线段树(主席树模板)
传送门【题目分析】主席树经典问题,静态查询区间第k大数。拖了很久都没有写的模板。。。。结果差不多此次%你赛都考,痛定思痛后,决定好好研究下。主席树可以近似理解为权值线段树的前缀和的形式,详细讲解可参考wcr写的主席树讲解:传送门。回到该题,因为不涉及修改操作,所以我们建立n棵权值线段树,先将数据离散化,这样主席树的权值就在1~len中了,每次插入操作就相当于将a[i]到根的路径...原创 2018-10-29 09:23:25 · 157 阅读 · 0 评论 -
SP11470 TTM To the moon(线段树动态开点+时光倒流)
洛谷传送门【题目分析】洛谷第一道黑题唉。题目也说的很清楚,维护一个数据结构,支持区间加,区间求和,区间历史求和,时光倒流。很明显如果将标记下传,那么还会多个撤销操作,这不优秀,所以我们就考虑标记永久化。然后其他就是主席树的基本操作了。。。。(240ms氵谷rank6)【代码~】#include<bits/stdc++.h>using namespace ...原创 2018-10-22 20:43:26 · 252 阅读 · 0 评论 -
主席树【权值线段树】(转)
注:本文转自WCR神仙(应WCR本人要求)的博客,传送门:https://blog.csdn.net/g21wcr/article/details/82970228一、权值线段树。权值线段树,顾名思义,是建立在权值上的线段树。与普通的线段树不同【平时的线段树建立在定义域上,或者说位置下标上,比如说:一个1到n的序列,建立线段树后,根节点就存的是a[1]到a[n]的信息,根节点的左儿子就存的...转载 2018-10-09 19:01:45 · 1269 阅读 · 6 评论