传送门 经典的平衡树问题,之前已经用splay写过一次了,今天我突发奇想,写了一发非旋treap的版本,发现挺好写的(虽然跑不过splay). 代码: #include<bits/stdc++.h> #define N 100005 using namespace std; typedef pair<int,int> res; int rt=0,n,m,cnt=0,son[N][2],siz[N],val[N],rd[N],rev[N]; inline int read(){ in…
https://www.luogu.org/problem/P3391 使用无旋Treap维护序列,注意的是按顺序插入的序列,所以Insert实际上简化成直接root和Merge合并,但是假如要在序列中插入某个数,则要SplitRank到正确的位置. 注意SplitRank的写法以及Pushdown的东西. #include<bits/stdc++.h> using namespace std; typedef long long ll; #define ls(p) ch[p][0] #def…
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1014 因为涉及到增加和修改,所以后缀数组就被pass掉了,想到的就是平衡树维护hash值,查询的时候就是二分相同的长度来比较,修改就是删除再增加. 这里使用的是无旋Treap #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int ull; ; int Siz[ma…