
Splay
linkfqy
A link to FQY.
展开
-
Splay-总结
【前言】Splay Tree,又名伸展树,是OI中应用非常广泛的一种数据结构。相比其他BST,Splay的效率还是不错的。我们一般用Splay维护一个序列。【操作】Splay有以下几个基本操作:1.rot旋转 这个不用我多说了,平衡树中很常见的操作2.splay 伸展 splay(x,k)操作的目的是:从子树(子序列)x中找到第k个,并通过旋转的方式,将其弄到子树的根上。 这里就不得不提一下S原创 2017-04-02 13:19:04 · 1203 阅读 · 1 评论 -
【模板】Splay
Splay适用于维护序列 用起来很方便,而且很好打关于Splay,戳这里原创 2017-06-02 20:51:09 · 471 阅读 · 0 评论 -
【Splay】BZOJ1500 [NOI2005]维修数列
维修数列题面如下: 这是Splay的终极模版题,思路非常清晰 这里提几个难点:1.求最大子序列 我们可以对每个节点维护3个信息: lm,rm,ma分别表示该段序列的最大前缀和、最大后缀和、最大子序列 那么maintain的时候就可以由子节点更新信息: lm=max(s[0]->lm,s[0]->sum+x,s[0]->sum+x+s[1]->lm); rm=max(s[1]->rm原创 2017-04-02 12:13:43 · 1004 阅读 · 1 评论 -
【线段树+Splay】HDU4942 Game on S♂play
题面在这里其实很简单的一道题……因为不管怎么旋转,Splay的中序遍历是永远不会变的所以用一个Splay跟他一起模拟对于每个节点,维护以下信息:子树区间[L,R][L,R]子树和sumsum子树大小sizesize然后每次询问就相当于询问一个区间的乘积,旋转就是修改两个点的值用线段树维护。复杂度O(qlogn)O(qlogn)然而……被卡常了,很不爽……以下代码正确,但不能过,仅供参考:原创 2017-09-03 21:06:18 · 810 阅读 · 0 评论