
主席树/函数式线段树/可持久化线段树
文章平均质量分 62
linkfqy
A link to FQY.
展开
-
主席树/函数式线段树/可持久化线段树
【前言】主席树、函数式线段树、可持久化线段树 这三者其实是一个东西…… 它的作用十分显然,就是访问线段树的历史版本……【实现】假设我们要对线段树进行Q次插入操作,如何(随机)访问第i次操作后的线段树?我们当然可以对每个状态都造一棵完整的线段树,但是显然会MLE啊,怎么办? 观察可以发现,线段树的插入操作每次只会更新logN个节点,其他节点都不会变 于是我们可以利用前一次操作的状态,避免重复构原创 2017-04-15 11:10:41 · 2439 阅读 · 1 评论 -
【欧拉筛+主席树】CodeChef PRMQ Chef and Prime Queries
题面在这里其实非常傻逼……一看就知道是主席树了吧……重点在如何快速对每个aia_i拆分质因子其实可以在欧拉筛的同时记录nxt[x]nxt[x]表示xx除以最小的质因子后得到的数(因为欧拉筛对每个合数仅标记一次)然后对aia_i分解质因子就是O(log ai)O(log\space a_i)的了所以总复杂度为O(nlogn⋅log ai)O(nlogn\cdot log\space a_i)勉强可以过原创 2017-10-28 15:42:27 · 561 阅读 · 0 评论 -
【主席树】BZOJ3524 [Poi2014]Couriers
题面在这里主席树裸题……每次找到最多的那个值就好了如果最多的都没有超过r−l+12r-l+1 \over 2,就是0了示例程序:原创 2017-09-28 10:56:28 · 734 阅读 · 0 评论 -
【暴力讨论+主席树】Codeforces 853C Boredom
题面在这里按照每次询问的子矩阵,把整个矩阵分为9块:1 2 34 5 67 8 9(块5是询问的子矩阵)那么块1与块5,6,8,9中的点有贡献,累计sum(1)∗sum(5+6+8+9)sum(1)*sum(5+6+8+9)(sum表示这个块里点的个数)……以此类推,暴力讨论每个块的贡献就好了怎么求sum?由于每一列有且只有1个点其实就是求一个序列的指定区间中值属于某个范围的个数用主席树维护就好原创 2017-09-27 18:00:31 · 635 阅读 · 0 评论 -
【主席树】Codechef Prefix XOR
题面在这里一道很巧妙的题目……构造前缀异或和 那么SjxorSi−1≥Sj−1xorSi−1S_jxorS_{i-1}\ge S_{j-1}xorS_{i-1} 考虑SjS_j和Sj−1S_{j-1}二进制下的LCP后一位 那么就对Si−1S_{i-1}的某一位产生了限制 这样可以线性求出每个i最远的j然后把这个右端点塞到主席树里 对于每次询问,考虑左端点在[L,R][L,R]内,右端点如原创 2017-08-01 12:30:32 · 932 阅读 · 0 评论 -
【主席树】POJ2104 K-th Number
K-th Number 一道典型的主席树模板题。 题面如下: DescriptionYou are working for Macrohard company in data structures department. After failing your previous task about key insertion you were asked to write a new data原创 2017-04-14 22:30:26 · 483 阅读 · 1 评论 -
【主席树|莫队|离线树状数组】BZOJ1878 [SDOI 2009]HH的项链
题面在这里这道题有三种解法,以下分别介绍(等我A掉会补全)【主席树】关于主席树戳这里造一个lst[i]表示位置i的这个数上一次出现的位置(如果没有就是0) 那么对于每次询问L~R范围里的数字种数 其实就是询问对于L≤i≤RL≤i≤R,满足lst[i]<Llst[i]<L的个数 那么就很好搞了,对lst造N棵值域线段树 询问就直接找到L-1这个位置看它前面有几个 复杂度O(Qlogn)O(Q原创 2017-04-25 07:18:18 · 1098 阅读 · 1 评论 -
【树状数组+主席树】BZOJ1901 [ZOJ2112]Dynamic Rankings
题面在这里树套树第一题……考虑没有修改(POJ 2104)的情况,就是经典的主席树了 其实就是一个静态的前缀和,利用容斥原理求区间信息但是如果有修改操作呢? 不过是维护这个前缀和罢了。 当然有一个想法,就是修改时O(n)更新后面的所有位置(受此次修改的影响) 这样就太慢了,直接树状数组比较好。 树状数组的每一个单位都是一棵主席树,整个管辖范围的修改都记到它上面修改操作就在树状数组上依次修改原创 2017-05-02 21:30:24 · 1312 阅读 · 1 评论 -
【模板】主席树/函数式线段树/可持久化线段树
参考博客:主席树/函数式线段树/可持久化线段树万年老物…… 今天才发出来……不想扯什么了,直接上代码吧原创 2017-07-10 15:54:55 · 383 阅读 · 0 评论 -
【主席树】51Nod 1175 区间中第K大的数
题面在这里主席树裸题……联赛快来了还是练练手速吧示例程序原创 2017-10-30 16:46:01 · 875 阅读 · 0 评论