http://172.20.6.3/Problem_Show.asp?id=1998 平衡树区间翻转的板子,重新写一遍,给自己码一个板子. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<cstdlib> using namespace std; ; ],fa[maxn],siz[max…
https://www.luogu.org/problemnew/show/P3391 以前写过题解的入门题重写练板子.wdnmd真就 ' == ' 写成 ' = ' 了编译器不报错呗. #include<bits/stdc++.h> using namespace std; const int maxn=100010; int n,m,rt=0,c[maxn][2]={},fa[maxn]={},rev[maxn]={},siz[maxn]={}; inline void pushup(in…
链接一下题目:luoguP3391[模板]文艺平衡树(Splay) 平衡树解析 这里的Splay维护的显然不再是权值排序 现在按照的是序列中的编号排序(不过在这道题目里面就是权值诶...) 那么,继续考虑,其实最终的结果也就是整颗Splay的中序遍历(平衡树的性质诶) 那么,现在如果按照权值来维护显然是不正确的 继续找找规律,发现,如果一个点在序列中的位置为第K个 那么,他就是平衡树的第K大(就当做普通的Splay来看的话) 所以,序列中的位置就变成了区间的第K大点 继续考虑如何翻转 翻转也就是…
[阶梯报告]洛谷P3391[模板]文艺平衡树 splay 题目链接在这里[链接](https://www.luogu.org/problemnew/show/P3391)最近在学习splay,终于做对了这道模版题,虽然不是很难的样子.~~但是我一开始并不会做,而且看完题解之后还打错一直打不对,调试了很久~~下面是题目简述 现在给你一个长度为n的序列,序列元素初始为1,2,3...n,同时有m个操作,每个操作给定一个L和R,表示将[L,R]区间的数进行翻转. 输出:完成所有操作之后的序列(n,m≤…
(这里是Splay基础操作,reserve什么的会在下一篇里面讲) 好久之前就说要学Splay了,结果苟到现在才学习. 可能是最近良心发现自己实在太弱了,听数学又听不懂只好多学点不要脑子的数据结构. 感觉Splay比Treap良心多了——代码真的好写. 对于Splay显然可以维护Treap的所有操作,并且本质是BST. 先看看Splay是怎么维护普通平衡树操作的吧. 首先先定义一些基础的变量(若不作特殊说明这些变量的意义不变) int t[N][2] // t[x][0]表示节点x的左子树,t[…
学习到这部分算是数据结构比较难的部分了,平衡树不好理解代码量大,但在某些情况下确实是不可替代的,所以还是非学不可. 建议先学Treap之后在学Splay,因为其实Splay有不少操作和Treap差不多的.学习了Treap和Splay之后也可以比较两者的差别以及各自的优劣势. 推荐博客:https://www.cnblogs.com/zwfymqz/p/7896036.html  这个大佬说得很好了,认真看了应该就能学会了. 还有https://blog.csdn.net/chenxiaoran6…
#1329 : 平衡树·Splay 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. 小Hi:怎么了? 小Ho:小Hi你也知道,我平时运气不太好.所以这也反映到了我写的Treap上. 小Hi:你是说你随机出来的权值不太好,从而导致结果很差么? 小Ho:就是这样,明明一样的代码,我的Treap运行结果总是不如别人.小Hi,有没有那种没有随机因素的平衡树呢? 小Hi:当然有了,这次我就跟…
Description 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:1. 插入x数2. 删除x数(若有多个相同的数,因只删除一个)3. 查询x数的排名(若有多个相同的数,因输出最小的排名)4. 查询排名为x的数5. 求x的前驱(前驱定义为小于x,且最大的数)6. 求x的后继(后继定义为大于x,且最小的数) Input 第一行为n,表示操作的个数,下面n行每行有两个数opt和x,opt表示操作的序号(1<=opt<=6) Output 对于操作3,4,5,6每行输…
BZOJ链接 洛谷链接 题意简述 模板题啦~ 代码 //普通平衡树(Splay) #include <cstdio> int const N=1e5+10; int rt,ndCnt; int ch[N][2],fa[N],val[N],siz[N],cnt[N]; int wh(int p) {return p==ch[fa[p]][1];} void create(int p,int v) {ch[p][0]=ch[p][1]=fa[p]=0; val[p]=v; cnt[p]=1,siz…
Hihocoder 1329 平衡树·Splay(平衡树) Description 小Ho:小Hi,上一次你跟我讲了Treap,我也实现了.但是我遇到了一个关键的问题. 小Hi:怎么了? 小Ho:小Hi你也知道,我平时运气不太好.所以这也反映到了我写的Treap上. 小Hi:你是说你随机出来的权值不太好,从而导致结果很差么? 小Ho:就是这样,明明一样的代码,我的Treap运行结果总是不如别人.小Hi,有没有那种没有随机因素的平衡树呢? 小Hi:当然有了,这次我就跟你讲讲一种叫做Splay的树吧…