摘要: 关于重量平衡树的相关概念可以参考姊妹文章:重量平衡树之替罪羊树 Treap是依靠旋转来维护平衡的重量平衡树中最为好写的一中,因为它的旋转不是LL就是RR 对于每一个新的节点,它给这个节点分配了一个随机数,用作优先级,然后以这个优先级来维护一个堆结构 由于堆本身就是完全二叉树结构,这样维护之后的树就无 阅读全文
posted @ 2018-07-18 18:29 静听风吟。 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 替罪羊树作为平衡树家族里比较简单的一员,效率还是很不错的 只要不是维护序列之类的需要提取子树进行操作的问题,选择高效率的重量平衡树是无可非议的 我们可以用一个标准:需不需要采用旋转操作来对重量平衡树进行一个简单的分类: 没有采用旋转机制的有:跳表和替罪羊树 采用旋转机制的有:Treap 所有采用旋转 阅读全文
posted @ 2018-07-18 17:33 静听风吟。 阅读(1115) 评论(0) 推荐(1) 编辑
摘要: 这是我第一篇对高级数据结构的描述,如有不准确的地方还请指出,谢谢~ 调这颗树的代码调的头皮发麻,和线段树根本不是一个难度的。 首先简单地介绍一下这棵平衡BST中的另类 这是一棵没有任何平衡因子的BST,它依靠均摊来达到O(logn)的插入查询和删除复杂度,常数比较大 而且,它的具有其他BST所不具备 阅读全文
posted @ 2018-07-17 23:53 静听风吟。 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 首先直接贴出来例程: 然后我们注意几个地方就好了 第一个地方是对于结构体的处理,要记住<运算符重载函数,因为set中的元素是默认有序的 第二个需要注意的地方是find返回的是迭代器,一定不能直接cout或者直接用 然后补充几个特殊的成员函数: 返回的是pair,而且pair里放的也是迭代器 其实上一 阅读全文
posted @ 2018-07-17 17:02 静听风吟。 阅读(361) 评论(0) 推荐(0) 编辑
摘要: 有很多题都有对栈的考察,这里引出一个最最基础的模型,其他复杂的问题可以在这个模型的基础之上完成 与其说是模型,不如说是给了一种解决问题的套路 至于元素顺序入栈之后,出栈结果的统计问题,这里可以参考卡特兰数的应用,后面会用到 这里的例题是这样的,给定一个括号字符串,判断该字符串是否合法 由于括号字符串 阅读全文
posted @ 2018-07-17 16:32 静听风吟。 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 在这里对图的存储和遍历进行一个规范,为以后更复杂的数据结构学习打下基础 首先是邻接矩阵的形式,适合于存稠密图,如果是全连接图就再合适不过了 一个二维数组就可以搞定了,如果是bool值那么就是不带权值的 a[i][j]=w表示i->j这条边的权值为w,反之亦然 建图操作是很显然的 接下来是一个DFS: 阅读全文
posted @ 2018-07-17 16:09 静听风吟。 阅读(652) 评论(0) 推荐(0) 编辑
摘要: 使用链表的存储方式是完全可以存树的 但是为了方便处理树的一些特性,我们将链表的存储结构进行了适当的修改 针对着一般二叉树,完全二叉树,我们也有着不同的存储策略 首先我们介绍对于一般二叉树而言的数组存储和指针存储,完全二叉树将在后面提到 对于数组存储而言,我们定义这样一个结构 使用t数组来存树中每一个 阅读全文
posted @ 2018-07-17 15:24 静听风吟。 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 在这里给出数组实现单链表和双链表以及指针实现单链表和双链表的例子,为以后更为复杂的数据结构实现打基础。 首先介绍一下使用数组来实现链表的原理 node数组是用来保存所有的节点的取值的,这里面的节点是程序生成的流水节点,其真正有没有出现在链表中是没有任何关系的 cur用来指示当前在node数组中的哪一 阅读全文
posted @ 2018-07-17 10:08 静听风吟。 阅读(2277) 评论(0) 推荐(0) 编辑
摘要: 区间型动态规划的典型例题是石子归并,同时使用记忆化搜索实现区间动归是一种比较容易实现的方式,避免了循环数组实现的时候一些边界的判断 n堆石子排列成一条线,我们可以将相邻的两堆石子进行合并,合并之后需要消耗的代价为这两堆石子的质量之和,问最小的合并代价 状态转移方程很容易给出: 因为要计算区间和,考虑 阅读全文
posted @ 2018-07-14 10:43 静听风吟。 阅读(1108) 评论(0) 推荐(0) 编辑
摘要: 棋盘型动态规划在二维平面上进行操作。根据当前状态的可能情况做出一个最优的判断,或是依赖当前状态拓展出新的状态,在拓展的过程中,依赖的可能是上一层的最优值也可能是上一层的全部值。 这应该是最容易理解的一种动态规划了,典型例题有数字三角形,比较神的题有方格取数和传纸条 我们这里给出的例子是传纸条问题的简 阅读全文
posted @ 2018-07-14 10:35 静听风吟。 阅读(992) 评论(0) 推荐(0) 编辑