替罪羊树
L_0_Forever_LF
一个热爱OI的OIer
展开
-
替罪羊树 板子
平衡因子一般用的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 &原创 2017-03-19 15:48:48 · 778 阅读 · 0 评论 -
BZOJ3729: Gty的游戏
树上的阶梯博弈,需要维护每个点子树内奇数层石子的异或和,因为兹瓷插入,所以用splay维护dfs序,每个节点开2个节点,子树内的点插入到这两点之间替罪羊树跑的飞快code:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #includ原创 2017-04-26 19:48:01 · 639 阅读 · 0 评论 -
BZOJ4066: 简单题
50s卡过..不知道为什么这么慢格子(x,y)里的加A可以直接插入一个值为A的点(x,y),如果原来有这个点了也没关系 因为插入可能导致树不平衡,所以用替罪羊树的重构思想,不满足平衡条件时暴力重构子树code:#include<cmath> #include<cstdio> #include<cstdlib> #include<cstring> #include<climits> #include原创 2017-03-25 08:19:42 · 900 阅读 · 0 评论