P3369 【模板】普通平衡树

题目通道\]([【模板】普通平衡树 - 洛谷](https://www.luogu.com.cn/problem/P3369 "【模板】普通平衡树 - 洛谷")) ```cpp #include using namespace std; const int maxn=1e7; #define int long long struct node { int l; int r; int val; int sval; int size; }; node tree[maxn]; int root=0; int idx=0; void newnode(int &x,int v) { x=++idx; tree[idx].val=v; tree[idx].sval=rand(); tree[idx].size=1; } void pushup(int pos) { tree[pos].size=tree[tree[pos].l].size+tree[tree[pos].r].size+1; } void split(int pos,int val,int &x,int &y)//按值分裂,取决于树的路径长,O(log n) { if(!pos) { x=y=0; return; } if(tree[pos].val<=val) { x=pos; split(tree[x].r,val,tree[x].r,y); pushup(x); } else { y=pos; split(tree[y].l,val,x,tree[y].l); pushup(y); } } int merge(int x,int y)//只需要考虑两棵树根节点的大小,因为它们内部都是有序的。返回值为新树的根节点,O(log n) { if(!x||!y)return x+y; if(tree[x].sval>n; for(int i=1;i<=n;i++) { cin>>op>>s; if(op==1) { ins(s); } if(op==2) { del(s); } if(op==3) { cout<

相关推荐
kklovecode1 分钟前
C语言之头文件,宏和条件编译
c语言·开发语言·算法
txinyu的博客2 分钟前
Linux 内存管理
linux·运维·开发语言·c++
Xの哲學12 分钟前
Linux自旋锁深度解析: 从设计思想到实战应用
linux·服务器·网络·数据结构·算法
zzxxlty13 分钟前
kafka C++ 和 java端计算分区ID不一致排查
java·c++·kafka
Reenrr13 分钟前
C++学习
开发语言·c++·学习
晚风吹长发16 分钟前
深入理解Linux中用户缓冲区,文件系统及inode
linux·运维·算法·链接·缓冲区·inode
m0_7482489423 分钟前
C++ 数据类型
java·jvm·c++
cwplh25 分钟前
DP 优化一:单调队列优化 DP
算法
Halo_tjn26 分钟前
基于Java的相关知识点
java·开发语言·windows·python·算法
CoovallyAIHub30 分钟前
英伟达CES 2026炸场:没有新显卡,却掏出了让全球AI公司彻夜难眠的“算力核弹”
深度学习·算法·计算机视觉