替罪羊树 板子
来源:互联网 发布:华硕超频软件 编辑:程序博客网 时间:2024/05/01 01:35
平衡因子一般用的0.7,0.75或0.8,随机化也行
重要的部分大概就这些吧
void dfs(const int &x){ if(tr[x].lc) dfs(tr[x].lc),tr[x].lc=0; id[++cnt]=x; if(tr[x].rc) dfs(tr[x].rc),tr[x].rc=0;}int build(const int &l,const int &r,const int &ff){ int mid=(l+r)>>1; int x=id[mid]; fa[x]=ff; siz[x]=1; if(l<mid) siz[x]+=siz[tr[x].lc=build(l,mid-1,x)]; if(r>mid) siz[x]+=siz[tr[x].rc=build(mid+1,r,x)]; return x;}int rebuild(int x){ int ff=fa[x]; cnt=0; dfs(x); x=build(1,cnt,ff); return x;}void Balanced(const int &pos){ int deep=1,x=pos; while(fa[x]) deep++,x=fa[x]; if((double)deep<(double)log(N)/log(1/A)) return ; x=fa[pos]; while((double)siz[tr[x].lc]<A*siz[x]&& (double)siz[tr[x].rc]<A*siz[x]) x=fa[x]; if(!x) return ; if(x==root) {root=rebuild(root); return ;} int ff=fa[x]; int &T=tr[ff].lc==x?tr[ff].lc:tr[ff].rc; T=rebuild(x);}
0 0
- 替罪羊树 板子
- 替罪羊树
- 替罪羊树
- 替罪羊树
- 替罪羊树
- 替罪羊树
- [BZOJ3224] 替罪羊树版本
- BZOJ 3224 替罪羊树
- 替罪羊树 模板
- 替罪羊树学习总结
- 替罪羊树 模板 bzoj3224
- 【算法】替罪羊树
- 【模板】替罪羊树
- 替罪羊树模板(BZOJ3224)
- 替罪羊树 论文部分翻译
- Template_Scapegoat_Tree(替罪羊树模板)
- BZOJ 3600 替罪羊树+线段树
- [TYVJ1728/BZOJ3224]普通平衡树-替罪羊树
- [蓝桥杯官网测试题] 入门训练
- Q91:真实地模拟透明材质(Realistic Transparency)
- 经典排序算法
- Codeforces 599C Day at the Beach【思维+优先队列】
- js基础10-应用案例
- 替罪羊树 板子
- C++编译与链接
- linux进入一个目录以及在目录中创建文件所需要的权限
- 单例模式
- spring-data-jpa更新实体
- C3p0数据库连接池的使用
- 几种按键扫描软件处理方法
- Object-c 基础 不可变数组与可变数组
- 机房重构准备工作(3)---反射+抽象工厂