大二上的时候,写过一个AVL的操作演示,今天一看Splay,发现和AVL其实一样,加上线段树的基础,懒惰标记什么都知道,学起来轻松许多哦
我参考的模板来自这里 http://blog.csdn.net/u013480600/article/list/2
里面有大量的ch[r][0] ch[r][1]等 我建议用宏定义取代,写的时候方括号少打了很多,等做的题多得时候,我再把自己使用的模板发来
...
分类:
其他好文 时间:
2014-07-30 17:43:44
阅读次数:
263
poj3468 裸线段树。因为在熟悉splay 所以就用splay交了一发。。。开始用的scanf()!==2 居然TLE了。。。然后我就当单组测试数据做的 然后就过了 囧TZ #include #include #include #include #include #include using n...
分类:
其他好文 时间:
2014-07-30 12:12:03
阅读次数:
278
题目大意:
四个操作:
I X Y 在x位置插入y
D x 删除x位置的数
R x y 用y替换x位置上的数字
Q x y 求出[x,y]上的最大子序列的和。
思路分析:
对于动态维护序列肯定是splay了。
现在就考虑以下几个问题。
之前我们知道线段树处理连续的子序列的和是用区间合并的。那splay上怎么做。
考虑边界,如儿子为 0 或者是冗余节点怎么办?
初始化的...
分类:
其他好文 时间:
2014-07-27 11:09:32
阅读次数:
257
题意:
给你个序列和一串询问 询问前a[i]个数字第i小的是几
思路:
动态的第k值问题 由于区间只增不减所以是水题
利用平衡树解决这类问题
treap是方便编写的类似平衡树的产品
treap方便实现BST的功能 splay更适合于去维护区间
代码:
#include
#include
#include
#include
#include
using name...
分类:
其他好文 时间:
2014-07-23 22:35:48
阅读次数:
234
题意:与区间查询点更新,点有20W个,询问区间的最大值。曾经用线段树,1000+ms,今天的伸展树,890没ms,差不多。
第一次学习伸展树,一共花了2个单位时间,感觉伸展树真很有用,也很好玩。现在只学了一点点。切个点更新试试。
大致思路:用编号(数组)作为树的键值建树,每插一个数,沿路节点更新最大值(每个结点有一个附加信息标记以之为子树的树所有点的最大值)。所以,查询时【i,j】,只要把i-...
分类:
其他好文 时间:
2014-07-22 22:34:13
阅读次数:
294
题意:
n个数字一开始排成一串 有两个指针L和R 指向了这串数字的一个区间的端点 现在有7种操作
1、使一个指针左移
2、使一个指针右移
3、在L后插入一个数字X
4、在R前插入一个数字X
5、删除L所指元素
6、删除R所指元素
7、翻转[L,R]区间
问 m次操作后 整串数字是什么样的
思路:
splay经典维护区间的操作 区间更新(翻转操作) 删除节...
分类:
其他好文 时间:
2014-07-20 22:12:53
阅读次数:
337
题意:
n个人站成一排 一开始是从1到n有序的 现在有三个操作 Top操作是将一个人排到队首 Query操作是询问某个人现在排第几 Rank操作是询问排某个位置的人是谁
思路:
将队伍扭来扭去… 很像splay的旋转吧(哪像了!!)
这是个不错的splay题…
首先 n很大 但是操作不多 想到离散化
离散化还有个技巧 我们发现只有top和query操作对单人进行 rank和人没什么关系
所以要把top和query操作的人单独拿出来 那么其他的人就可以用区间的形式来表示了
我们只需要开...
分类:
其他好文 时间:
2014-07-19 23:24:09
阅读次数:
344
题意:
将一列数字排序 排序规则是 每次找到最小值的位置loc 将1~loc所有数字颠倒 然后删掉第一位 直到排好序 排序要求是稳定的
思路:
这题要做的是 寻找区间最小值位置 翻转区间 的操作 因此可以想到用splay
只需要每个节点记录一个small 就可以实现找到最小值位置
翻转区间操作就是将splay的超级头转到最上面使之成为根 再把loc转到根下面 这时根的右儿子的左儿子就是需要翻转的区间 用一个rev延迟更新 然后将loc转到最上面是指成为根 删掉根 如此循环...
分类:
其他好文 时间:
2014-07-17 10:53:28
阅读次数:
217
人生的第一道动态树,为了弄懂它的大致原理,需要具备一些前置技能,如Splay树,树链剖分的一些概念。在这里写下一些看各种论文时候的心得,下面的代码是拷贝的CLJ的模板,别人写的模板比较可靠也方便自己学习理解,然后一些概念的则是学习了一些论文,下面的内容可以看作对别人模板的理解心得,以及对论文的收获体...
分类:
其他好文 时间:
2014-07-16 20:46:38
阅读次数:
189
Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就能够使用来解题了。指针的删除操作的处理还是那么难的,非常多坎须要避开.同一个坎还是坑了我好多次,就是指针传递的问题,什么时候须要改动指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实參。这里的删除操作就是须要改变传递...
分类:
其他好文 时间:
2014-07-15 00:09:13
阅读次数:
233