![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
高级数据结构
文章平均质量分 69
高级数据结构
_szy_
oier
展开
-
【平衡树】splay伸展树
伸展树(Splay Tree)是一种自调整二叉搜索树,它通过不断进行伸展(splay)操作,将最近访问的节点移动到树的根节点,以提高对这些节点的访问效率。伸展树的主要特点是在插入、查找和删除操作时,都会执行伸展操作,使得最近访问的节点位于根节点,从而实现了一种局部性原理,即频繁访问的节点更容易被快速访问。伸展树的基本伸展操作有三种:伸展到根(Splay to Root):将某个节点x伸展到树的根节点,通过一系列旋转操作实现,使得x成为新的根节点。原创 2023-10-05 09:53:43 · 242 阅读 · 0 评论 -
【线段树】模板
线段树(Segment Tree)是一种用于解决区间查询问题的数据结构。它可以高效地支持和操作。线段树的基本思想是将一个区间划分为多个子区间,并为每个子区间维护一些信息。这些信息可以是区间内元素的等等,根据具体问题而定。线段树的构建过程是一个递归的过程。首先将整个区间划分为两个子区间,然后递归地构建每个子区间的线段树,直到区间长度为1。构建过程中,每个节点都会保存其对应区间的信息。线段树的查询操作也是一个递归的过程。原创 2023-08-07 16:46:38 · 119 阅读 · 0 评论 -
【二叉树】遍历与查找
【二叉树】遍历与查找原创 2023-02-24 12:59:06 · 117 阅读 · 0 评论 -
【栈】单调栈经典例题
现在有一个长度为n的序列,在形成的任意子区间中,查找最小的值和此区间和的乘积的最大值。660例如在区间1-6中,最小值为1,区间和为21,积为21;在区间3-5中,最小值为4,区间和为15,积为60;再由遍历其他区间,得出值60为最大,最后您输出了60。原创 2023-05-30 00:53:50 · 423 阅读 · 0 评论 -
【并查集】经典例题(一)
战舰。原创 2023-06-13 23:15:05 · 224 阅读 · 0 评论 -
【队列】优先队列
优先队列(Priority Queue)是一种特殊的队列,其中每个元素都带有一个优先级。优先级最高的元素最先被取出。如果两个元素具有相同的优先级,则它们按照它们在队列中的顺序被取出。优先队列可以使用不同的数据结构实现,例如堆、二叉搜索树或有序数组。其中,堆是实现优先队列最常用的数据结构,因为它具有良好的时间复杂度和空间复杂度。原创 2023-06-02 00:23:28 · 702 阅读 · 0 评论 -
【并查集】初步+模板
并查集是一种用于维护集合的数据结构,主要支持两种操作:查找和合并。并查集通常用于解决连通性问题,例如判断图中两个节点是否连通,或者判断无向图是否有环等。并查集维护的是一组不相交的集合,每个集合由若干个元素组成。每个元素都有一个代表元,代表元可以用来标识集合。初始时,每个元素都是一个单独的集合,代表元为自身。并查集支持两种操作:查找(Find):查找元素所属的集合,即找到该元素的代表元。合并(Union):将两个集合合并成一个集合,即将其中一个集合的代表元指向另一个集合的代表元。原创 2023-06-03 22:02:14 · 52 阅读 · 0 评论 -
【栈】单调栈
单调栈是一种特殊的栈,它的特点是栈中的元素保持单调性。具体来说,可以分为单调递增栈和单调递减栈两种类型。单调递增栈是指栈中的元素从栈底到栈顶逐渐递增。当一个元素要入栈时,如果它比栈顶元素小,就将栈顶元素弹出,直到栈顶元素比它小为止。这样可以保证栈中的元素始终保持单调递增的状态。单调递减栈则是栈中的元素从栈底到栈顶逐渐递减。当一个元素要入栈时,如果它比栈顶元素大,就将栈顶元素弹出,直到栈顶元素比它大为止。这样可以保证栈中的元素始终保持单调递减的状态。原创 2023-05-27 20:12:05 · 197 阅读 · 0 评论 -
【树状数组】应用
样例输入:57 15 15 53 31 1样例输出:12110。原创 2023-08-06 22:10:11 · 156 阅读 · 0 评论 -
【树状数组】讲解(一)
树状数组(Fenwick Tree),也称为二叉索引树(Binary Indexed Tree,BIT),是一种用于高效处理动态数组前缀和的数据结构。它可以在O(log n)的时间复杂度内完成单点更新和区间查询操作。树状数组的主要应用是计算数组的前缀和。它通过将数组元素按照二进制表示的索引进行组织,使得每个节点存储一定范围内的元素的和。通过利用二进制的特性,树状数组可以高效地进行更新和查询操作。树状数组的更新操作可以通过不断将当前位置的索引加上其最低位的1来实现。原创 2023-08-04 16:19:07 · 147 阅读 · 0 评论