![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
文章平均质量分 77
nlj1999
这个作者很懒,什么都没留下…
展开
-
静态区间第K大
两道模板题:POJ 2104POJ 2761做法好多,主席树,划分树,离线处理(曼哈顿最小生成树?)+BST(Treap or Splay or SBT),貌似分治+BIT也可以,不过懒得搞了。以后复习模板时用得上。主席树:#include#include#include#includeusing namespace std;const int N=100原创 2015-12-08 20:39:29 · 802 阅读 · 0 评论 -
2588: Spoj 10628. Count on a tree
竟然1A了,完了这个月的RP用光了。树上主席树(听起来好奇怪)。在每个节点建一颗主席树,保存其到根节点的权值。然后询问就是sum(u)+sum(v)-sum(lca(u,v))-sum(fa(lca(u,v))),至于这个前缀和是什么,大概就是线性序列的那个前缀差不多,不过搞成根节点到当前节点链上的前缀和了。#include#include#include#includeu原创 2015-12-15 18:16:05 · 616 阅读 · 1 评论 -
ZOJ 2112 Dynamic Rankings
人生第二发树套树。话说原来树套树跑得比整体二分快啊,真不科学。整体二分260MS,树套树130MS,快了一倍。这题嘛就树状数组套主席树。一开始建一颗空的主席树,以后的树都在这基础上搞。于是有两套主席树。第一套是原数组的,依次在前一颗树上建。第二套是修改出来的主席树,套上树状数组,树状数组修改的时候在之前的树上建。然后询问的时候要将两套主席树的影响都加上,于是就差不多原创 2016-01-18 16:22:18 · 244 阅读 · 0 评论 -
BZOJ 4012: [HNOI2015]开店
这叫啥?可持久化树链剖分?首先忽略掉那个年龄的限制那就是求所有点到某点的路径之和这个画个图会发现是 Σdepth[i]+n*depth[u]-2*Σdepth(lca(u,i))前两个可以O(1)求,最后那个可以用树剖求。方法就是每个点到根的路径测度+1,这个可以用线段树更新,然后u到根的路径上的测度与长度之积的和就是答案了。但是出现了那个可恶的限制不过嘛,我们有传说中原创 2016-04-13 19:51:05 · 489 阅读 · 0 评论 -
BZOJ 4571: [Scoi2016]美味
区间最大异或对,显然用可持久化Trie嘛WTF???怎么轻易地就加了一个数呢好吧我们考虑把Trie的每个节点加上个值域,于是就变成了主席树啦于是从高位往低位贪心,每次找到该位异或为1时可选的区域,在主席树上找区域中是否存在值复杂度mlogwlogw#include#include#include#include#include#include#include#in原创 2016-05-24 20:06:30 · 720 阅读 · 0 评论 -
BZOJ 3207: 花神的嘲讽计划Ⅰ
刷点水题舒缓心情一开始没读懂题以为是查询那些数是不是都在那个区间里于是开始写主席树,写完发现不对QAQ题目是求那个区间里是否存在一个字串和给定串相等由于串长是一定的,每个节点存以该节点为结尾的长度为K的字符串的哈希值然后用主席树判断是否存在即可(读错题后一怒之下把主席树删了写了个特技莫队,跑得还挺快的)#include#include#include#includ原创 2016-05-25 20:15:27 · 441 阅读 · 0 评论 -
BZOJ 4539: [Hnoi2016]树
md强行凑数据结构题,树剖+主席树,各种函数搞一大堆查询,然后其实就是求两点的lca。。。。#include#include#includeusing namespace std;const int N=100000+5;#define rep(i,l,r) for(int i=l;i<=r;i++)typedef long long ll;ll read(){ char ch原创 2016-04-19 11:51:28 · 531 阅读 · 0 评论