rt
merge
int merge(int rt1,int rt2){
if(!rt1||!rt2) return rt1|rt2;
if(rk[rt1]<rk[rt2]){
pushdown(rt1);
son[rt][1]=merge(son[rt][1],rt2);
pushup(rt1);
return rt1;
}
else{
pushdown(rt2);
son[rt2][0]=merge(rt1,son[rt2][0]);
pushup(rt2);
return rt2;
}
}
spilt
pair<int,int> spilt<int rt,int y>{
pair<int,int> ans;
if(rt==0){
ans.first=ans.second=0;
return ans;
}
if(sz[rt]>=y){
ans=spilt(son[rt][0],y);
son[rt][0]=ans.second;
ans.second=rt;
}
else{
ans=spilt(son[rt][1],y);
son[rt][1]=ans.first;
ans.first=rt;
}
pushup(rt);
return ans;
}
newnode
int newnode(int x){
tot++;
key[tot]=x;
sz[tot]=1;
rk[tot]=rank();
return tot;
}
find
int find(int k,int rt=top){
pushdown(rt);
if(sz[son[rt][0]]>=k)
return find(k,son[rt][0]);
k-=sz[son[rt][0]];
if(k==1) return key[rt];
k--;
return find(k,son[rt][1]);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具