用途 平衡树(可实现区间翻转) 原理 和treap一样,中序遍历表示权值的顺序,并且每个点有一个随机的附加值,形成一个堆来保证复杂度 但是不旋转,所有操作通过split和merge实现 分为两种split:按权值和按排名 代码 luogu3369 普通平衡树 ...
分类:
其他好文 时间:
2019-04-13 10:40:34
阅读次数:
134
跃进表是一个有序数据结构,它通过在每个节点上维护多个指向其他节点的指针,从而达到快速访问节点的目的; 跃进表支持平均O(logN)、最坏O(N)复杂度的节点查询,还可以通过顺序性来批量处理节点; 大多数情况下,跳跃表与平衡树效率差不多,并且因为跳跃表的实现比平衡树要来的更简单,所以可以使用跳跃表来替 ...
分类:
其他好文 时间:
2019-04-10 00:41:14
阅读次数:
200
输入一颗二叉树,判断这棵树是否为二叉平衡树。首先来看一下二叉平衡树的概念:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。因此判断一颗二叉平衡树的关键在于求出左右子树的高度差,而二叉树的高度又是怎么定义的呢?二叉树的高度指的是从根节点到叶子节点所有路径上 ...
分类:
编程语言 时间:
2019-04-09 20:28:05
阅读次数:
202
分块 分块(第一节) 前记 最近学了分块(好奇怪啊,我先学线段树,树状数组,平衡树才开始学分块),为了不让自己忘记,也随便总结总结。因为刚刚开始入门,所以只讲最简单和最基础的。(以后会慢慢更新) 啥是分块妳 嗯~,其实分块是一种很暴力的算法,可以用于处理区间操作(主要)等问题,可以将线性的枚举优化。 ...
分类:
其他好文 时间:
2019-04-09 18:38:42
阅读次数:
211
Cardboard Box 贪了个半天贪不对, 我发现我根本就不会贪心。 我们先按b排序, 然后枚举选两颗心的b的最大值, 在这个之前的肯定都要选一个, 因为前面的要是一个都没选的话, 你可以把当前选两颗心的替换成前面选两颗心, 然后用平衡树或者线段树维护一下前k大和就好啦。 ...
分类:
数据库 时间:
2019-04-08 13:41:42
阅读次数:
193
这里给出博主的几种平衡树模板代码 vector 代码: Treap: Splay 替罪羊树 FHQ treap ...
分类:
其他好文 时间:
2019-04-07 14:31:34
阅读次数:
107
Dish Shopping 将每个物品拆成p 和 s 再加上人排序。 然后问题就变成了, 对于一个线段(L - R), 问有多少个(li, ri)满足 L >= li && R >= ri, 这个东西可以直接树状数组套平衡树维护。 但是这个题目有个特殊性,因为排好序之后不会存在 li > L && ...
分类:
编程语言 时间:
2019-03-28 00:53:46
阅读次数:
360
前言 上一篇写了 "数据结构之二叉搜索树、AVL自平衡树" ,这次来写堆。 堆的创造者 很久以前排序算法的时间复杂度一直是O(n^2), 当时学术界充斥着 “排序算法不可能突破O(n^2)” 的声音,直到1959年,由D.L.Shell提出了一种排序算法,希尔排序(Shell Sort),才打破了这 ...
分类:
编程语言 时间:
2019-03-25 09:14:17
阅读次数:
198
前言 最近在帮公司校招~~ 所以来整理一些数据结构方面的知识,这些知识呢,光看一遍理解还是很浅的,看过跟动手做过一遍的同学还是很容易分辨的哟~ 一直觉得数据结构跟算法,就好比金庸小说里的《九阳神功》,学会九阳神功后,有了内功基础,再去学习其他武功,速度就有质的提升 内容大概包含这些,会分多篇文章来整 ...
分类:
其他好文 时间:
2019-03-20 20:45:04
阅读次数:
245