![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
主席树
stargazer.
夜を穿つの
展开
-
【LOJ #6100】「2017 山东二轮集训 Day1」第一题(主席树)
传送门考虑求出每个位置能向右延伸的最远距离后即可用主席树维护区间加区间求和做考虑求出f[0/1][i][j]f[0/1][i][j]f[0/1][i][j]表示前iii个位置,第jjj位作为最高位时从0(1)0(1)0(1)变成1(0)1(0)1(0)的次数然后对于每个数lll二分右端点如果l−1l-1l−1时前缀jjj位异或和为111,那么由于实际从iii开始为000,就看l−rl-rl...原创 2020-02-19 20:02:20 · 255 阅读 · 0 评论 -
【LOJ #6073】「2017 山东一轮集训 Day5」距离(主席树 / 树链剖分)
传送门首先若p[i]=ip[i]=ip[i]=i时且离线时可以直接用LNOI2014]Lca的做法在线的话可以用主席树对每个点维护到根上的所有ppp到根的路径+1+1+1修改后的dfsdfsdfs序然后差分一下答案即可如果标记永久化时空常数都会小很多#include<bits/stdc++.h>using namespace std;#define cs const#d...原创 2020-02-18 19:59:07 · 233 阅读 · 0 评论 -
【洛谷P5331】【SNOI2019】—通信(最小费用最大流+主席树优化建边)
传送门洛谷垃圾数据写暴力,不开longlonglonglonglonglong都能过由于n≤1000n\le1000n≤1000所以能很简单的想到n2n^2n2建边的费用流洛谷数据只需要在建边的时候判一下val≤wval\le wval≤w就可以过考虑把绝对值拆开对2种情况分别以权值为下标建主席树建边即可#include<bits/stdc++.h>using na...原创 2019-09-23 21:53:10 · 177 阅读 · 0 评论 -
【BZOJ3514】— Codechef MARCH14 GERALD07加强版(LCT+主席树)
传送门原创 2019-08-30 21:14:20 · 153 阅读 · 0 评论 -
【BZOJ4771】—七彩树(主席树)
传送门原创 2019-08-28 21:38:10 · 485 阅读 · 0 评论 -
【Codeforces Round #265 (Div. 1)】E—The Classic Problem(主席树+最短路+哈希)
传送门用主席树维护距离的二进制位处理进位可以二分第一个为0的地方比较大小的话可以通过哈希找到第一个不同的地方复杂度O(mlog2n)O(mlog^2n)O(mlog2n)主席树多开logloglog个位置处理进位我不知道是我脸黑还是真的太毒了写的自然溢出、单取模、双取模哈希都被卡了我真的是*****#include<bits/stdc++.h>using nam...原创 2019-08-28 09:23:13 · 136 阅读 · 0 评论 -
雅礼集训2019 Day1T2—Permutation(主席树)
给出 nnn 个数AiA_iAi,定义排列一个 111~nnn 的排列 PPP 的价值为:∑i≤nAi∗Pi\sum_{i\le n}A_i*P_i∑i≤nAi∗Pi请你给出排列价值前 kkk 小的 kkk 个排列的价值。n,k≤1e5n,k\le1e5n,k≤1e5考虑k=1k=1k=1时我们就是求一个排列得到∑i=1nApi∗(n−i+1)\sum_{i=1}^{n}A...原创 2019-07-22 17:09:49 · 286 阅读 · 0 评论 -
【BZOJ2588】【Spoj10628】—Count on a tree(主席树)
传送门题意:求树上路径第kkk大值主席树菜题树上主席树就完了#include<bits/stdc++.h>using namespace std;const int RLEN=1<<21|1;inline char gc(){ static char ibuf[RLEN],*ib,*ob; (ib==ob)&&(ob=(ib=ibuf)+...原创 2019-04-24 17:32:24 · 127 阅读 · 2 评论 -
【BZOJ4539】【HNOI2016】—树(主席树)
传送门真⋅树套树真·树套树真⋅树套树因为每次复制的都是原树的子树所以我们考虑直接在新树上加一个点来记录这是原树中的哪个点的子树边权设为儿子在父亲子树中连接的点到父亲的根的距离至于编号是一段连续的区间,可以直接记录每一段二分查找具体的点相当于原树子树中查找第kkk大,一个主席树记录一下查询距离的时候先计算出u,v,lcau,v,lcau,v,lca三个根之间的距离然后分类讨论一下u,...原创 2019-03-27 07:42:07 · 108 阅读 · 0 评论 -
【BZOJ4448】【SCOI2015】—情报传递(主席树)
传送门相当于求路径上小于i−k−1i-k-1i−k−1的值的数量直接上主席树,带修O(nlog2n)O(nlog^2n)O(nlog2n)发现后面的修改是不可能对前面的询问有影响离线先把所有修改了建树上主席树每次找lcalcalca区间求一波就可以了#include<bits/stdc++.h>using namespace std;#define ll long l...原创 2019-03-26 21:52:32 · 168 阅读 · 0 评论 -
【BZOJ5319】【JSOI2018】—军训列队(主席树)
传送门显然是直接按照位置来排队最优考虑每次是把编号一段拿出来,考虑建一颗主席树可以在主席树上二分找到在kkk前的人要站到哪儿注意有可能二分到的位置可能还是被放到特判+1即可然后随便算一下就可以了#include<bits/stdc++.h>using namespace std;#define ll long longinline int read(){ c...原创 2019-03-08 14:45:25 · 106 阅读 · 0 评论 -
【BZOJ4556】【TJOI2016&HeOI2016】—字符串(后缀数组+主席树+ST表)
传送门先建出SaSaSa,考虑二分串的长度,判断可行显然和CCC这个串的lcp&gt;=midlcp&gt;=midlcp>=mid的那些rankrankrank相连的一块都是满足的那我们就只需要查询是否有串在aaa~bbb的子串内对rkrkrk建一颗主席树,区间查询就可以了#include<bits/stdc++.h>using namespace ...原创 2019-02-28 18:54:58 · 212 阅读 · 0 评论