摘要: 图论 最短路 次短路与 k 短路 kruskal 及应用 query_lca 树剖之重链剖分 强连通分量 数据结构 并查集 并查集 线段树 浅析 进阶 可持久化 优化建图 平衡树 BST 和 Treap Fhq 和 Splay 替罪羊树 树套树 树套树 暴力数据结构 分块 莫队 珂朵莉树 其他数据结 阅读全文
posted @ 2022-10-23 17:29 Zvelig1205 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 次短路 严格次短路 基本思路:两个 dis 数组分别储存最短路和次短路,依然使用堆优 Dij。 显然,堆优部分是不变的。 struct node{ int id,val; bool operator <(const node &b)const { return val>b.val; } }; pri 阅读全文
posted @ 2022-10-23 09:23 Zvelig1205 阅读(107) 评论(0) 推荐(1) 编辑
摘要: 替罪羊树 简述 替罪羊树是一种体现代码暴力美学的数据结构。 虽然暴力,但它不是像分块、莫队那样的根号算法,它是一种 $\log$ 算法。 多了解几个平衡树,会发现每棵树都有自己的特点,比如: Treap 是 BST 与堆的结合体; Splay 特有的伸展到根; Fhq_Treap 类似于拼图; 红黑 阅读全文
posted @ 2022-10-09 11:06 Zvelig1205 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 平衡树 很久以前,我立志要学习所有的平衡树,然后把每个树的学习笔记都整理到相关博客中。 而如今…… 今年欢笑复明年,不知退役在眼前。 在阅读本文之前建议先学习二叉搜索树相关内容。 相关题单。 Fhq_Treap 原来 Treap 是一种旋转类的平衡树(即树堆),然后由~~防火墙~~范浩强神犇发明了一 阅读全文
posted @ 2022-10-02 10:44 Zvelig1205 阅读(1930) 评论(0) 推荐(2) 编辑
摘要: 字典树-Trie 字典树,顾名思义,就是一个像字典一样的树。 —— OI-wiki 普通 Trie 如图: Trie 用边代表字母,那么从根节点到某个节点的路径表示一个字符串。 Trie 支持的操作有三个: 插入字符串 查询字符串是否存在 删除字符串 最常用的是前两个(比如模板)。 Trie 的储存 阅读全文
posted @ 2022-09-18 08:35 Zvelig1205 阅读(79) 评论(0) 推荐(0) 编辑
摘要: 优化建图 树套树 显然啊,树套树有很多种。 可以线段树套平衡树,平衡树套线段树,线段树套线段树,树状数组套主席树等等。 1. 线段树套平衡树 最经典的树套树,还得是模板题。 前置知识:Fhq_Treap 如果全局维护什么排名、k 小值,前驱后继什么的,单是平衡树就可以解决了。 不过,这里有区间。 对 阅读全文
posted @ 2022-09-13 20:58 Zvelig1205 阅读(60) 评论(0) 推荐(0) 编辑
摘要: 可持久化 线段树优化建图 两道相对模板的例题,都是线段树优化建图之后跑最短路。 CF786B P6348 分几种情况: 点向点连边 点向区间连边 区间向点连边 区间向区间连边 建树 显然,如果直接建图,每次能建立 $n^2$ 数量级的边,总边数大概是 $O(mn^2)$(因为重边会多次计算),空间复 阅读全文
posted @ 2022-09-08 20:40 Zvelig1205 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 线段树进阶 可持久化 能够保留每一个历史版本的数据结构。 那么可持久化线段树就是能保留历史版本的线段树。 原谅我之前一直叫它可持续化线段树 。 可持久化线段树 一般来说,可持久化线段树本质其实是可持久化数组,即支持单点修改、单点查询。 因为要保留历史版本,那么如果对于每次的的修改和查询均新生成一棵线 阅读全文
posted @ 2022-09-07 16:42 Zvelig1205 阅读(258) 评论(0) 推荐(2) 编辑
摘要: 特别浅的浅谈线段树 线段树进阶 懒标优先级 当我们的线段树维护的不再是一种区间操作,而是两种或者更多,要如何选择懒标的优先级,以便于我们更简单的维护我们想要维护的? 先看两个例子:P3373 线段树 2 和 P1253 扶苏的问题。 P3373 是 加法懒标 和 乘法懒标 之间的优先级问题,而 P1 阅读全文
posted @ 2022-09-07 16:19 Zvelig1205 阅读(861) 评论(0) 推荐(3) 编辑
摘要: Segment_Tree 线段树好题大赏 定义 线段树是一种二叉搜索树,线段树的每个结点都存储了一个区间,也可以理解成一个线段。 用处 维护区间信息。线段树可以在 $O(\log n)$ 的时间复杂度内实现单点修改,区间修改,区间查询等操作。 最典型的,也是最简单的就是 区间加 和 区间求和。 以 阅读全文
posted @ 2022-09-07 15:56 Zvelig1205 阅读(209) 评论(0) 推荐(0) 编辑