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<

相关推荐
沐怡旸10 分钟前
【穿越Effective C++】条款16:成对使用new和delete时要采用相同形式——内存管理的精确匹配原则
c++·面试
z203483152034 分钟前
我与C++的故事
开发语言·c++·c++40周年
异步的告白1 小时前
C语言-数据结构-1-动态数组
c语言·数据结构·c++
想唱rap1 小时前
Linux开发工具(4)
linux·运维·服务器·开发语言·算法
前端炒粉2 小时前
21.搜索二维矩阵 II
前端·javascript·算法·矩阵
星释2 小时前
Rust 练习册 :Rail Fence Cipher与栅栏密码
开发语言·算法·rust
东方隐侠安全团队-千里2 小时前
第3节 RSA算法开启公钥加密时代
网络·人工智能·算法
7澄12 小时前
深入解析 LeetCode 1:两数之和
算法·leetcode·职场和发展·arraylist
Moonbit3 小时前
MGPIC 初赛提交倒计时 4 天!
后端·算法·编程语言