专栏文章

平衡树模板

个人记录参与者 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 条评论,欢迎与作者交流。

正在加载评论...