专栏文章
平衡树模板
个人记录参与者 2已保存评论 2
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @miny9mf0
- 此快照首次捕获于
- 2025/12/02 10:19 3 个月前
- 此快照最后确认于
- 2025/12/02 10:19 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
const int N=100007;
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
int nV,lson[N],rson[N],sz[N],val[N],rk[N];
int newnode(int v){
int u=++nV;
val[u]=v;
lson[u]=rson[u]=0;
sz[u]=1;
rk[u]=rng();
return u;
}
void pushup(int u){
sz[u]=sz[lson[u]]+sz[rson[u]]+1;
}
void pushdown(int u){
}
void split(int u,int& x,int& y,int p){
if (u==0){
x=y=0;
return;
}
pushdown(u);
if (sz[lson[u]]+1<=p){
x=u;
split(rson[u],rson[x],y,p-sz[lson[u]]-1);
pushup(x);
}
else{
y=u;
split(lson[u],x,lson[y],p);
pushup(y);
}
}
int merge(int u,int v){
if (u==0||v==0){
return u|v;
}
if (rk[u]>rk[v]){
pushdown(u);
rson[u]=merge(rson[u],v);
pushup(u);
return u;
}
else{
pushdown(v);
lson[v]=merge(u,lson[v]);
pushup(v);
return v;
}
}
int main(){
return 0;
}
相关推荐
评论
共 2 条评论,欢迎与作者交流。
正在加载评论...