数据的存储结构: 1: 顺序存储结构 2: 链式存储结构 3: 索引存储结构 4: 散列存储结构 1: 线性表 线性表即List,是N个元素有序的有限序列。逻辑上相邻的元素在物理上也相邻,可以随机访问。 特点: 1: 第一个 2: 最后一个 3:前驱 4:后继 2: 链表 单链表有一个头节点head ...
分类:
其他好文 时间:
2017-03-01 16:03:23
阅读次数:
199
Splay树,又叫伸展树,可以实现快速分裂合并一个序列,几乎可以完成平衡树的所有操作。其中最重要的操作是将指定节点伸展到指定位置, 目录 节点定义 旋转操作 伸展操作 插入操作 删除操作 lower_bound&upper_bound 前驱后继操作 可重Splay 名次操作 区间操作 目录 [节点定 ...
分类:
其他好文 时间:
2017-01-15 11:34:18
阅读次数:
268
然而我还是在继续刷水题。。。 终于解开了区间第k大的心结。。。 比较裸的线段树套平衡树,比较不好想的是求区间第k大时需要二分一下答案,然后问题就转化为了第一个操作。复杂度nlog3n。跑的比较慢。。。 在查前驱后继的时候写错了。。。如果要直接赋值ans的话前驱是k[x]<=z,后继是k[x]<z,如 ...
分类:
其他好文 时间:
2016-12-08 21:25:31
阅读次数:
312
对于一个普通的二叉树 我们可以很明显的看到,在一个二叉树中,会有许多的空结点,而这些空结点必然会造成空间的浪费,为了解决这个问题,我们可以引入线索二叉树,把这些空结点利用起来,利用 ‘^’ 记录给定结点的前驱后继,那么问题就来了,该如何建立呢? 前面我们说过四种的遍厉方法,我应该用哪种方法来建立线索 ...
分类:
其他好文 时间:
2016-11-15 11:07:12
阅读次数:
261
4.栈和队列栈(stack),是仅限定在表尾进行插入和删除操作的线性表 (一种特殊的线性表,有前驱后继关系)我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何元素的称为空栈,栈又称为先进后出的线性表简称LIFO结构先进后出,后进先出,最先进栈的元素不一定最后出,因为栈对元素的删除和增加位置 ...
分类:
其他好文 时间:
2016-07-04 18:33:50
阅读次数:
102
将所有盒子插入链表,每当一个盒子变空时,从链表里删去它。 查一下它的前驱后继$pre,nxt$,那么$[pre+1,nxt-1]$都是空的。 每次对于$[A,B]$这段都为空,对小朋友按$R$维护线段树,维护区间内$L$的最大值,不断询问$[1,B]$内$L$的最大值,如果$\geq A$则拿出来。 ...
分类:
其他好文 时间:
2016-06-27 17:07:10
阅读次数:
252
一,红黑树介绍 什么是红黑树?为什么需要红黑树? 对数据集合进行 查找、插入、删除、找最大结点、找最小结点、找前驱/后继结点 是一种很常见的需求,那如何找到一种数据结构来高效地实现前面的各个基本操作呢?根据这篇博文对树进行的基本介绍,大概也解各种树的特点。AVL树虽然能保证各种基本操作在O(logN ...
分类:
其他好文 时间:
2016-06-26 16:46:17
阅读次数:
197
显然每次走过的最小路程,就是按照dfs序走的总路程。 如果没修改的话其实是虚树。。 既然带了修改。。。其实就是维护关键点的dfs序。 用棵平衡树维护一下就好了,涉及到插入、删除、查找前驱后继、查找最大最小值。 算两点间路程还得求lca (所以这题就变成treap全套板子了。。。 1 #include ...
分类:
其他好文 时间:
2016-06-18 16:56:55
阅读次数:
128
首先我们枚举次大值,然后确定以这个数为次大值的最大区间。 这个区间就是左边第二个比它大的数的下标+1,右边第二个比它大的数的下标-1。 难就难在找到这个区间。 我们考虑将数排序,然后从大到小将数原来的下标插入set,此时set里的值都大于等于当前插入的数。 所以利用set找到前驱的前驱,后继的后继,
分类:
其他好文 时间:
2016-02-28 12:18:48
阅读次数:
216
操作包括二叉搜索树的创建,插入,搜索,寻找前驱后继,删除,左右旋转,插入元素为根结点,以及两棵二叉树的合并。二叉树的创建很简单,只需要设置 value, left child, right child 即可。插入的时候递归插入树中合适的位置,通过比较插入元素的值与根结点元素的值,如果小于则递归插入到...
分类:
其他好文 时间:
2015-12-30 23:45:03
阅读次数:
309