区间的查询,点修改,插入和删除。先姑且当作模板吧,略挫,慢慢补充,慢慢优化。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:1024000000");
#define EPS (1e-8)
#d...
分类:
其他好文 时间:
2014-06-05 02:01:37
阅读次数:
400
题目链接:点击打开链接题意比較明显,不赘述。删除时能够把i-1转到根,把i+1转到根下则i点就在
根右子树 的左子树,且仅仅有i这一个 点#include#include#include#includeusing namespace std;#define
N 300500#define inf 1...
分类:
其他好文 时间:
2014-06-03 11:29:26
阅读次数:
277
Splay Tree的插入操作,搜索操作,和删除操作都实现了,那么就可以使用来解题了。
指针的删除操作的处理还是那么难的,很多坎需要避开.
同一个坎还是坑了我好多次,就是指针传递的问题,什么时候需要修改指针本身的值,就必须返回指针或者传递指针的指针,或者传递指针的的实参。
这里的删除操作就是需要改变传递到函数的指针本身的,所以我这里使用了返回指针操作。
还有删除树的问题,之前的代码没做删除...
分类:
其他好文 时间:
2014-06-01 10:30:52
阅读次数:
339
Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则。
因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入。
参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/
对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果...
分类:
其他好文 时间:
2014-05-31 21:47:50
阅读次数:
320
Splay Tree 支持的之中操作。
插入,删除,求前驱和后即,区间更新与查询。
先来一发Splay Tree最基础的操作——伸展。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pragma comment(linker, "/STACK:102400...
分类:
其他好文 时间:
2014-05-25 04:27:37
阅读次数:
291
伸展树概念 伸展树(Splay Tree)是一种二叉排序树,它能在O(log
n)内完成插入、查找和删除操作。它由Daniel Sleator和Robert Tarjan创造。 (01)
伸展树属于二叉查找树,即它具有和二叉查找树一样的性质:假设x为树中的任意一个结点,x节点包含关键字key,节点x...
分类:
其他好文 时间:
2014-05-18 19:17:30
阅读次数:
225
【前言】快要省选二试了。上次去被虐出翔了~~这次即便...
分类:
其他好文 时间:
2014-05-18 15:38:00
阅读次数:
329
试了一下先上再下的Treap方式,很高兴,代码变短了,但是,跑的变慢了!!!其实慢得不多,5%左右。而且这个版本的写法不容易写错。。只要会一般可持久化Treap的人写着都不难。。。就是相对于(压行的)Splay还是长了点。。。
代码: 1 #include 2 #include 3 ...
分类:
其他好文 时间:
2014-05-12 20:56:42
阅读次数:
480
一直没有点动态树这个科技树,因为听说只能用Splay,用Treap的话多一个log。有一天脑洞大开,想到也许Treap也能从底向上Split。仔细思考了一下,发现翻转标记不好写,再仔细思考了一下,发现还是可以写的,只需要实时交换答案二元组里的两棵树,最后在吧提出来的访问节点放回去就行了。本着只学.....
分类:
其他好文 时间:
2014-05-11 22:56:42
阅读次数:
605
题目链接:点击打开链接
题意比较明显,不赘述。
删除时可以把i-1转到根,把i+1转到根下
则i点就在 根右子树 的左子树,且只有i这一个 点
#include
#include
#include
#include
using namespace std;
#define N 300500
#define inf 10000000
#define L(x) tree[x].ch[0]
#d...
分类:
其他好文 时间:
2014-05-11 21:05:52
阅读次数:
365