树,一种十分优美的数据结构,因为它本身就具有的递归性,所以它和子树见能相互传递很多信息,还因为它作为被限制的图在上面可进行的操作更多,所以各种用于不同地方的树都出现了,二叉树、三叉树、静态搜索树、AVL树,线段树、SPLAY树,后缀树等等.. 枚举那么多种数据结构只是想说树方面的内容相当多,本...
分类:
其他好文 时间:
2015-01-31 14:28:37
阅读次数:
185
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 100010;
int pre[maxn], ch[maxn][2], sz[maxn];
int root, top1;
int s[maxn], top2;//内存池
LL sum[maxn];
int val[maxn], add...
分类:
其他好文 时间:
2014-09-03 14:58:56
阅读次数:
264
说好的专题。。。lct的一些概念看论文 杨哲《QTREE解法的一些研究》 简单易懂。首先不要把lct想象得很难,其实很水的。lct就是很多splay树维护的树。。。lct的access操作就是在原树中拓展一条点到根的类二叉树出来(用splay来维护)这里,splay树是按深度作为关键字的,当然,在无...
分类:
其他好文 时间:
2014-08-18 12:23:24
阅读次数:
263
大二上的时候,写过一个AVL的操作演示,今天一看Splay,发现和AVL其实一样,加上线段树的基础,懒惰标记什么都知道,学起来轻松许多哦
我参考的模板来自这里 http://blog.csdn.net/u013480600/article/list/2
里面有大量的ch[r][0] ch[r][1]等 我建议用宏定义取代,写的时候方括号少打了很多,等做的题多得时候,我再把自己使用的模板发来
...
分类:
其他好文 时间:
2014-07-30 17:43:44
阅读次数:
263
人生的第一道动态树,为了弄懂它的大致原理,需要具备一些前置技能,如Splay树,树链剖分的一些概念。在这里写下一些看各种论文时候的心得,下面的代码是拷贝的CLJ的模板,别人写的模板比较可靠也方便自己学习理解,然后一些概念的则是学习了一些论文,下面的内容可以看作对别人模板的理解心得,以及对论文的收获体...
分类:
其他好文 时间:
2014-07-16 20:46:38
阅读次数:
189
链接推荐一篇帖子http://blog.csdn.net/lyhypacm/article/details/6734748这题暴力不可行主要是因为这颗树可能极度不平衡,不能用并查集是不能路径压缩,这样时间复杂度是很高的。可以用伸展树主要是因为它的伸展性,每次操作后可以通过伸展使这棵树更好的保持平衡。...
分类:
其他好文 时间:
2014-06-22 10:40:14
阅读次数:
324
很水的splay树。
会简单的操作即可。。。
#include
#include
#include
#include
#include
using namespace std;
#define maxn 1100000
#define mem(a,b) memset(a,b,sizeof(a))
#define root10 ch[ch[root][1]][0]
#define root1 c...
分类:
其他好文 时间:
2014-06-19 11:56:59
阅读次数:
328
Splay树的插入操作,只需要处理好插入节点的孩子节点就可以了,最重要的是不要破坏了BST的基本规则。
因为高度并不是Splay树的首要因素,所以插入的时候也是使用splay操作,然后在根节点插入。
参考:http://www.geeksforgeeks.org/splay-tree-set-2-insert-delete/
对比一下使用插入创建的树和手工创建数的区别,先序遍历的结果...
分类:
其他好文 时间:
2014-05-31 21:47:50
阅读次数:
320
Splay 树的比较基本的序列维护操作, 用getSeg( int l, int r) 获取要操作的区间
若:获取区间[l,r],非空,getSeg(l,r),然后KT指向区间[l,r]
若:获取区间为空,如当要在l位置插入一个值时,则getSeg(l,l-2),然后可在KT赋值新节点
D. Cup Trick
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-04-30 22:14:40
阅读次数:
326