平衡树
文章平均质量分 92
zxyoi_dreamer
退役了退役了爬了爬了,搞个锤子算法竞赛,不如好好享受大学生活。
展开
-
【校内模拟】幻想(后缀平衡树)
简要题意:给你一个字符串 SSS,请你支持:末尾加字符末尾删字符给一个询问串 QQQ ,求 QQQ 在 S[l:r]S[l:r]S[l:r] 中出现了多少次。强制在线题解:如果第三个操作没有 l,rl,rl,r 的限制就是 BZOJ4768,后缀平衡树裸题。有的话也没什么区别,开个vector维护一下子树内的点有哪些就行了。复杂度好像是两个 log,但是跑得飞起。一个lo...原创 2020-04-09 17:24:37 · 307 阅读 · 2 评论 -
【校内模拟】Growing(树哈希)(SBT)(LCT维护轻重链剖分)
简要题意:给一棵有根树,强制在线,支持动态加叶子,询问一个子树的自同构变换个数。题解:一句话题解:SBT+封装双哈希+原根倒base+LCT维护三个标记顺便说一下,博主并不清楚有没有什么离线处理方式以前确实没有见过LCT拿来维护轻重链剖分这种东西的。。。(LCT维护的东西一般称为虚实链剖分)首先考虑一个显然的暴力,维护树哈希,然后每次加叶子暴力跳所有父亲并修改哈希值,就可以直接维护答案...原创 2019-10-23 20:44:09 · 385 阅读 · 0 评论 -
【BJOI2019】送别(平衡树)(大力分类讨论)
传送门首先,我不知道为什么有这么多人在喷出题人,我觉得这道题作为防AK题就只有“部分分过少”,或者说“部分分写法过于繁杂”这一个问题吧,而且出题人也在知乎上面道歉说了部分分在考虑上面欠妥了。这道题的分类讨论还是比较考验细节和码力的,算是一道好题,就是代码太长看上去毒瘤题解:算上所有空字符和注释的话,代码长度7K出头。我写的Splay,主要是考虑到有大量的关于区间的操作,目前洛谷和LOJ...原创 2019-10-21 11:38:36 · 327 阅读 · 0 评论 -
【BZOJ4768】wxh loves substring(后缀平衡树)
传送门题解:由于需要支持删除,所以SAM+LCT的做法不行了。但是后缀平衡树就没有这个问题,注意删除和重构写得不好可能会炸精度。没有删除的版本见:here代码:#include<bits/stdc++.h>#define ll long long#define re register#define cs constnamespace IO{ inline c...原创 2019-10-06 15:04:19 · 294 阅读 · 0 评论 -
【BZOJ2555】SubString(后缀平衡树)
传送门题解:后缀平衡树练手题。设询问串为qqq,qqq#为在qqq后面接了一个极大字符的串,如果我们能够求得后缀数组,显然排名在qqq和qqq#之间的就是qqq能够匹配的位置。由于强制在线,维护后缀数组用后缀平衡树即可。代码:#include<bits/stdc++.h>#define ll long long#define re register#define ...原创 2019-10-06 15:00:44 · 251 阅读 · 0 评论 -
【CF768G】The Winds of Winter(启发式合并)(二分答案)
传送门题解:其实发现我们一定会在最大子树中选择一个子树接到最小的子树上。假设我们二分这个答案为xxx,所有子树中最大值为mxmxmx,次大值为submxsubmxsubmx,最小值为mnmnmn,则答案显然不可能小于submxsubmxsubmx,且我们选出来的子树大小 deltadeltadelta 必须满足mx−delta≤xmx-delta\leq xmx−delta≤x且mn+de...原创 2019-10-05 18:50:12 · 215 阅读 · 0 评论 -
【校内模拟】攻城略池(启发式合并)(树形DP)(二分答案)
题解:发现实际上把每个儿子第一次到达祖先的时间点拿出来排个序,祖先单位时间受到的伤害其实是个分段一次函数。总伤害就是求前缀和。需要维护排好序的儿子到祖先的时间,dsu on tree,每次计算的时候二分答案并check,没了。。。代码:#include<bits/stdc++.h>#define ll long long#define re register#defin...原创 2019-10-03 15:39:10 · 284 阅读 · 0 评论 -
【题目泛做】哲学题(DFS序)(Splay)
简要题意:树木仙有一棵根节点为 1的菊花树 (除 1 号节点外所有节点的父亲都是 1). 这棵树每个节点都有一个权值, 最开始 i 号节点的权值为 val_i .树木仙觉得菊花树不够美观, 决定修改这棵树. 树木仙每次会将编号在 [l,r] 之间的节点的父亲修改为x. 因此, 这棵树的形态会不断改变. 为了保证美观, 树木仙还会不断修改某个点的权值.为了证明你能维护这棵树, 在修改过程中树木...原创 2019-09-10 10:54:41 · 276 阅读 · 0 评论 -
【CodeChef-COT5】Count on a Treap(线段树维护单调栈)
传送门为什么英文题面里面的数据范围是int,而中文题面的数据范围是long long???题解:首先按照kkk排序,得到Treap的中序遍历。支持询问路径长度其实分两部分:求LCA,求深度。先考虑求LCA。两个之间www最大的点就是它们的LCA。然后考虑求深度,仔细观察一下,发现一个点的深度就是它的www向左和向右的上升序列的长度,单调栈维护一下就行了。先把所有操作离线下来,离散化...原创 2019-09-09 15:43:31 · 236 阅读 · 0 评论 -
【CF414E】Mashmokh's Designed Problem(ETT)
传送门题解:很好写,一发AC,CFrk6。MD,CF上排我前面的全部写的是指针,CF评测机好像是32位的,指针跑得飞快这是个动态树问题,奇怪的询问显然不好用LCT搞,考虑ETT,(也就是Splay维护括号序列)。第一个询问,我们可以方便地维护两个点的深度,问题在于求LCA的深度,括号序列好像内部刚好不包含LCA。。。然而我们知道[in[u],in[v]][in[u],in[v]][in...原创 2019-09-06 16:36:19 · 264 阅读 · 0 评论 -
【8.22测试爆零记】
T1:wykres线段树分治+可回退化并查集。需要比较精细的实现,不然会被卡常。下面给出一个在时限的1/5内通过所有点的代码。代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inlin...原创 2019-08-23 19:57:33 · 222 阅读 · 0 评论 -
2019.03.24【SPOJ-GSS8】Can you answer these queries VIII(treap)二项式展开
传送门都是套路不想写题解了。代码:#include<bits/stdc++.h>#define int unsigned int#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rlen=1<...原创 2019-03-24 23:31:07 · 250 阅读 · 0 评论 -
2019.03.24【SPOJ-GSS6】Can you answer these queries VI(treap)
传送门解析:Treap实现一下GSS3的操作就行了代码:#include<bits/stdc++.h>#define ll long long#define re register#define gc get_char#define cs constnamespace IO{ inline char get_char(){ static cs int Rl...原创 2019-03-24 23:18:45 · 161 阅读 · 0 评论 -
2019.01.23【BZOJ3337】ORZJRY I(FHQ_treap实现ODT)
传送门解析:这种题无脑压节点,剩下的无脑写平衡树暴力就行了。平衡树做不了的提出来数组做就行了。没什么难度。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc get_char#define cs constnamesp...原创 2019-01-23 21:48:13 · 277 阅读 · 0 评论 -
2019.01.17【BZOJ4399】 魔法少女LJJ(FHQ_treap)(ODT)
传送门解析:跟动态图屁关系没有,自己去读题啊,操作参数c≤7c \leq 7c≤7,没有最后两个断边的操作。思路:前777个显然都是平衡树随便做的东西吧,第六个稍微有点麻烦,不过只需要取一下对数就行了,就能化乘法为加法,double 就能存得下。然而这道题有什么需要说的呢?优化,以及卡常,作为BZOJ唯一两份卡进3s(目前)的代码之一的auther。我想说一些只能用在平衡树,而不能用...原创 2019-01-17 16:08:11 · 262 阅读 · 0 评论 -
2019.01.14【洛谷P5055】可持久化文艺平衡树(可持久化FHQ_treap)
传送门解析:不会有人真的试图去可持久化Splay吧。。。你仔细研究一下就会发现Splay最坏情况下会把树中所有节点的父子关系全部打乱。。。两三次操作就新建O(n)O(n)O(n)个节点,于是你就RE或者MLE了。当然你可以试一试朝鲜树可持久化,不过复杂度不够优秀。于是这里请出优秀的FHQ_treap。不持久化的话都是常规操作吧, 废话可持久化还是比较简单的,我们只需要在下放标记的时...原创 2019-01-14 19:59:54 · 375 阅读 · 0 评论 -
2019.01.14【LOJ105】【洛谷P3391】文艺平衡树(FHQ treap)
LOJ传送门洛股传送门解析:很久没有写过平衡树了,恢复一下手感。FHQ_treap本身好写且常数不大。这道题只需要维护区间翻转,每次提取一个区间只需要按照sizsizsiz关键字splitsplitsplit出需要操作的序列部分来,然后该打标记的打标记,该下传的时候下传就行了。代码:#include&lt;bits/stdc++.h&gt;using namespace std;...原创 2019-01-14 18:43:52 · 253 阅读 · 0 评论 -
2018.11.18【LOJ120】持久化序列(可持久化非旋Treap)
传送门解析:(这句话仅针对指针)事实证明,在需要全局初始化的情况下,静态数组没有动态分配内存快。所以要么动态内存,要么静态内存动态初始化。可持久化平衡树裸题,没什么好说的,我写的是非旋treap。非旋treap的分裂关键字用大小考虑就行了。不过听说这道题卡输入输出,建议加一个优化。代码:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace s...原创 2018-11-18 22:07:28 · 261 阅读 · 0 评论 -
【模板】带旋Treap(指针实现)
参考题目:LOJ107解析:联赛结束后统一更模板题题解。数组实现看这里代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinline...原创 2018-10-06 11:50:22 · 263 阅读 · 0 评论 -
【模板】带旋Treap(数组实现)
参考题目:LOJ107解析:联赛完了统一更所有模板题解析。代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinlinell geti...原创 2018-10-03 11:45:36 · 291 阅读 · 0 评论 -
【模板】伸展树Splay(指针实现)
参考题目:LOJ107解析:联赛后统一更所有模板题解析。代码:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinlineint geti...原创 2018-10-03 19:52:48 · 564 阅读 · 0 评论 -
【模板】伸展树Splay(数组实现)
参考题目:LOJ107解析:联赛完后统一更模板题题解。代码:#include&lt;bits/stdc++.h&gt;using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinlineint getin...原创 2018-10-03 21:53:14 · 295 阅读 · 0 评论 -
【模板】伸展树Splay区间操作(指针实现)
参考题目:LOJ105解析:联赛结束后统一更模板题题解。代码:#include<bits/stdc++.h>using namespace std;#define ll long long#define re register#define gc getchar#define pc putchar#define cs constinlineint geti...原创 2018-10-03 23:40:53 · 293 阅读 · 0 评论