随笔分类 - 数据结构
数据结构
摘要:单调栈与单调队列 单调栈 单调栈,顾名思义就是一种具备单调性质(内部元素满足单调性)的栈结构 现在来看一道例题: 向右看齐 有 \(n\) 个人从左到右站成一排,每个人都有一个身高,现要求所有人向右看齐,问每个人可以看到的最远的人是哪一个?(一个人右边第一个身高大于等于他的人会挡住这个人的视线 )。
阅读全文
posted @ 2025-08-25 23:33
nightmare_lhh
摘要:树链剖分 概念 树链剖分(重链剖分)是一个用来解决树上多点修改与查询(树上区间修改与查询)的在线算法。 提到区间修改,线段树无疑是一个很优秀的方案,但线段树只支持维护一串连续的序列。而树剖就是一个将树拍平成一个序列进行处理的算法。 算法思想 先来用一个很简单的拍平方法:用 DFS序 对书中每一个节点
阅读全文
posted @ 2025-06-21 13:35
nightmare_lhh
摘要:可持久化线段树(可持久化树组,主席树) 概念 可持久化线段树是线段树的扩展,它的每一个操作都是建立在线段树的某一个历史版本上(相当于每一步操作都会产生一个新线段树,我们在指定线段树上进行操作) 基本思想 既然是在某个历史版本上操作,那么我们的每一步操作都建立一个全新的线段树。但很容易发现,这样做会浪
阅读全文
posted @ 2025-04-12 23:02
nightmare_lhh
摘要:\(Treap\) 平衡树 概念 \(Treap\) 是一种代码复杂度与思维都较为简单的平衡树,它在普通 \(BST\) 的基础上,给每一个节点赋予了一个优先级属性。对于 \(Treap\) 中的每一个节点,除了它的权值满足 \(BST\) 的基本关系,它的优先级也满足小根堆的性质。 我们发现 \(
阅读全文
posted @ 2025-04-08 23:07
nightmare_lhh
摘要:\(BST\) 二叉查找树 概念 二叉查找树(Binary Search Tree,\(BST\))是一种具有特殊性质的二叉树: 树中每个节点均有权值 对于一个节点 \(u\),当 \(u\) 存在左子树时,其左子树内所有节点的值均小于(等于) \(u\) 的值 对于一个节点 \(u\),当 \(u
阅读全文
posted @ 2025-04-05 21:00
nightmare_lhh
摘要:离线二维数点 概念 给定平面上 \(n\) 个点 \((x_i,y_i)\) 和 \(m\) 个矩形区域查询 \([l_j,r_j] \times [d_j,u_j]\),要求快速计算每个矩形内点的数量。 算法思想 核心思路 将每个查询区间 \([l_j,r_j]\) 转化为前缀和差值: \(\te
阅读全文
posted @ 2025-03-29 23:10
nightmare_lhh
摘要:线段树 概念 线段树是用来解决区间修改,区间查询的问题,它的修改与求和都是\(O(log_2n)\)的,效率非常高。它与前缀和的区别是能够修改数组中的元素。 基本思想 线段树是一颗二叉树,其每一个节点都对应序列的一段区间。如下图所示: graph TB; A[[1 - 8]] B[[1 - 4]]
阅读全文
posted @ 2025-03-10 22:49
nightmare_lhh
摘要:树状数组 概念 树状数组是用来解决单点修改,区间查询的问题,它的修改与求和都是\(O(log_2n)\)的,效率非常高。它与前缀和的区别是能够修改数组中的元素。 基本思想 根据任意正整数关于\(2\)的不重复次幂的唯一分解性质,若一个正整数\(x\)的二进制表示为\(10101\),则\(x\)能够
阅读全文
posted @ 2025-03-10 22:48
nightmare_lhh

浙公网安备 33010602011771号