摘要: 树状数组的本职工作是修改点,查询区间和 我们可以先回顾一下姊妹篇:(一维)树状数组的实现 然后我们再回顾一下差分数组,差分数组可以实现修改区间,查询点 如果不用树状数组进行优化的话,修改是O(1),查询是O(n)的 我们要做的就是用树状数组把查询操作优化成对数级别的 这里直接给出树状数组的代码以及差 阅读全文
posted @ 2018-07-18 23:38 静听风吟。 阅读(1406) 评论(2) 推荐(1) 编辑
摘要: 我们通常所用的map其实就是一棵红黑树,如果有平衡树问题能够用它来解决一定要用,不要手写了,因为红黑树的效率是非常棒的 先看几个定义: 其中m1就是一个关联数组,为了模拟普通哈希表 (这里的所有的都是用红黑树实现的,如果你想用哈希表实现,请直接把map替换成hash_map,在空间足够的情况下) 另 阅读全文
posted @ 2018-07-18 21:40 静听风吟。 阅读(578) 评论(0) 推荐(0) 编辑
摘要: 关于重量平衡树的相关概念可以参考姊妹文章:重量平衡树之替罪羊树 Treap是依靠旋转来维护平衡的重量平衡树中最为好写的一中,因为它的旋转不是LL就是RR 对于每一个新的节点,它给这个节点分配了一个随机数,用作优先级,然后以这个优先级来维护一个堆结构 由于堆本身就是完全二叉树结构,这样维护之后的树就无 阅读全文
posted @ 2018-07-18 18:29 静听风吟。 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 替罪羊树作为平衡树家族里比较简单的一员,效率还是很不错的 只要不是维护序列之类的需要提取子树进行操作的问题,选择高效率的重量平衡树是无可非议的 我们可以用一个标准:需不需要采用旋转操作来对重量平衡树进行一个简单的分类: 没有采用旋转机制的有:跳表和替罪羊树 采用旋转机制的有:Treap 所有采用旋转 阅读全文
posted @ 2018-07-18 17:33 静听风吟。 阅读(1115) 评论(0) 推荐(1) 编辑