数据结构
文章平均质量分 76
Ekennis
在读本科生
展开
-
Treap学习笔记及模板
Treap是平衡搜索树的一种。所谓 “Treap”,即 “Tree” + “Heap”, 顾名思义,是使用堆方法对搜索树进行平衡的一种数据结构。约定该篇文章讨论的二叉搜索树都遵守 “比当前节点值大的节点在右子树,小于等于当前节点值的节点在其左子树” 这一规定。Treap维护平衡的方式Treap的目的主要是利用堆的性质来平衡原搜索树。因为堆是一棵完全二叉树,深度最优嘛。对于一棵普通的二叉搜索树,我们对其每个节点再随机赋上一个优先级权值 ppp. 即对任意节点,多了一个变量 p=random()p=ra原创 2021-12-14 14:39:29 · 235 阅读 · 0 评论 -
分块算法:莫队(持续更新)
分块,然后捡到莫队前言HDU多校连续两天都遇到了莫队的题,于是蒟蒻缓慢地开始学习莫队算法初见莫队,只知道是个离线区间工具,以为会有点复杂。但其实基础的莫队很好理解,就是一种读完之后感觉很普通的离线的分块算法(虽然,我还是不可能想得到就是了)分块算法为了引入莫队,不妨先看一个分块的经典例题(不想看可以通过目录跳过)洛谷P3870 开关简化题意:一个01序列,要求可以进行动态区间取反和区间查询(有几个1)数据规模1e51e51e5普通莫队...原创 2021-07-26 15:09:19 · 276 阅读 · 0 评论 -
数据结构期末复习——二叉平衡树(AVL树)的旋转
平衡树要记得计算平衡因子。平衡因子为当前节点为根节点的子树的左右子树高度差。插入、删除都会改变平衡因子。顺着操作的节点向上找到第一个平衡因子大于1的节点,经过的路径即为最小不平衡子树。最小不平衡子树最多只有3个节点。通过如下的旋转可以达到平衡的目的:单旋最简单的情况是,子树呈一条直线。将中间的“拎起来”即可。双旋由于搜索树的性质,当不平衡子树出现“弯折”时,直接将中间的“拎起来”会破坏搜索树“左小右大”的性质。此时通过交换,将3个节点中大小处在中间的节点放到中间的位置,再由“左小右大”的性原创 2021-06-19 22:21:30 · 209 阅读 · 2 评论 -
数据结构期末复习——哈希表
哈希表哈希表通过哈希函数为各个值重新分配物理索引,哈希函数通常与取模密切相关。例如,给定哈希函数index=key mod max_sizeindex= key \space mod\space max\_sizeindex=key mod max_size,其中max_sizemax\_sizemax_size为哈希表的存储容量。假若容量为15,则哈希函数为f(x)=x mod 15f(x)=x \space mod \space 15f(原创 2021-06-17 20:14:48 · 278 阅读 · 0 评论 -
从树到并查集,再到最小生成树(详细)
并查集是什么?最小生成树是什么?原创 2021-02-06 22:04:11 · 278 阅读 · 0 评论