随笔分类 - 数据结构
摘要:这里提供一个线段树合并的做法,个人感觉思维难度和代码难度都不大,~~我一发过了这题,nice~~ 分析 把每个人对应的路径看成是询问,考虑如何处理这些询问: 可以发现对于一条路径 ,相当于是 依次打上 这样的时间戳,然后最暴力的做法就
阅读全文
摘要:目录 线段树分治 本题做法 实现 线段树分治 事实上线段树分治的做法很简单,就是在时间轴上开线段树,以方便处理在一段时间内其效果的操作。 比如说,现在整棵线段树维护的时间范围是 ,开出的线段树自然是: 现在有一个操作在时间 上作用,那么对应于线段树的节点就是: 又有
阅读全文
摘要:分析 这题做法很简单: 跑一遍 (最小生成树),把这棵树建立起来,上面的边标记为树边。 枚举非树边 ,记边权为 ,考虑这条边能够提供的增量 。 具体来说:只需要求出树上 的路径上的边的最大值 和严格次大值 $
阅读全文
摘要:~~块乐~~ 分析 因为这题查询的是指定区间 的最大异或子段,我们很难不想到使用可持久化 来搞。 然而,对于每次查询,如果单纯地使用可持久化 ,那么必须要枚举右端点进行查询,那么每次查询的复杂度是 $O(n{\rm {l
阅读全文
摘要:广义后缀自动机简述 不了解后缀自动机的可以看看: https://www.cnblogs.com/Tenshi/p/16408718.html 在字典树的基础上建立广义后缀自动机。 建立 对若干模式串,先插入字典树中。 注意到对字典树进行 的时候,对应的状态的 \(
阅读全文
摘要:后缀自动机(SAM)小记 介绍 简单来说,就是使用一个 以及一棵树维护一个字符串所有子串(压缩的)信息。 其中 的点称为状态。 endpos 个人认为 的核心在于 。 子串(终点)在原串出现的下标集合称为 集合
阅读全文
摘要:虚树小记 简明地讲解了虚树的构建过程。 引入 比如给你一棵树,然后有多次询问,每次询问都给出树上若干个点 个(称为关键点),然后对这些点的性质作查询(比如求它们的最远点对什么的) 注意到如果每次询问都扫描整棵树时间复杂度会爆炸,但是如果能够保证总查询扫描的点与 \(\sum |m
阅读全文
摘要:后缀数组小记 简要地介绍了后缀数组相关知识,对原理部分的解析较浅。 介绍 sa[i]: 代表排名 的后缀在原串的下标。 rank[i]: 表示原串下标 所对应的后缀的排名。 height[i]: \(\rm{height}[i] = \rm{LCP}(\rm{suffix(s
阅读全文
摘要:子序列自动机 这东西是我刷 ARC 的时候遇到的,慕名而来。 结合模板题阅读: https://www.luogu.com.cn/problem/P5826 构建 这个自动机原理十分简单,你可以将它当作一个 dp 来食用: 记所给的字符串为 ,字符集为 ,\(next[i][ch
阅读全文
摘要:K-D Tree 这东西是我入坑 ICPC 不久就听说过的数据结构,但是一直没去学 QAQ,终于在昨天去学了它。还是挺好理解的,而且也有用武之地。 目录 简介 建树过程 性质 操作 例题 简介 K-D Tree(KDT , k-Dimension Tree) 是一种可以 高效处理 维空间
阅读全文
摘要:传送门: (空间给的大,但数据强) https://www.luogu.com.cn/problem/P5025 (数据弱) https://www.acwing.com/problem/content/3042/ 线段树优化建图 + 拓扑排序。 可以作为线段树优化建图模板题食用。 分析 对于这道题
阅读全文
摘要:使用 fhq_treap 竟然让我一发就过了这题,nice,比之前编写 Splay 的时候对着 y总 代码 debug 的体验好多了。经此一役,不得不承认 fhq_treap 真的非常容易编写而且错误率低,不仅如此,它所能支持的操作也可以覆盖 Splay 所支持的,而且能避免很多复杂的边界问题,绝赞
阅读全文
摘要:传送门: https://www.luogu.com.cn/problem/UVA11992 蓝书(训练指南)的线段树例题。 分析 这题在思维上并不复杂,是线段树的常见操作。 需要注意的地方主要是标记优先级: 这里我像蓝书一样记增加标记为 ,赋值标记记为 。 当遇到赋
阅读全文
摘要:目录 原理 代码 原理 模板题传送门:https://www.acwing.com/problem/content/2817/ cdq分治用来解决什么样的问题呢?一般来说可以: 统计具有三维属性 () 的、满足一定的比较关系 有多少对。 优化一些数据结构,算法。
阅读全文
摘要:目录 简介 原理 代码 简介 所谓可持久化线段树,就是将线段树的各个历史版本存储起来,以达到通过利用历史信息解决问题的目的。 原理 以权值线段树为例, 我们来看看权值线段树是如何实现可持久化的。 给出一个空的权值线段树,依次插入四个数: 1 3 4 2 首先,这是空的树(记为第 个版本)
阅读全文