平衡树 - Splay
_Gion
初中某laji的OIer
展开
-
「学习笔记」Splay Tree 伸展树
Splay是一种能快速分裂与合并的平衡树,常用于解决某些序列问题.rotate : 单旋先理解一下右旋,左旋与右旋是完全对称的操作.如图,右旋的作用就是一个结点是左儿子,它旋转到父亲的位置,并且可以发现旋转后依然满足二叉搜索树的性质双旋双旋就是一次往上旋两层,保证复杂度,而单旋不保证.定义dir(x)dir(x)dir(x)表示xxx是左子树还是右子树。如果dir(...原创 2018-09-14 22:04:36 · 281 阅读 · 0 评论 -
「BZOJ 1251」序列终结者「Splay」
像线段树那样,维护一个懒标记就行#include <algorithm>#include <cstdio>using namespace std;namespace Splay { const int N = 1e5 + 10; int root, ch[N][2], sz[N], fa[N]; int tag[N], mx[N], va[N]; bool...原创 2018-10-28 17:21:19 · 279 阅读 · 0 评论