摘要: 分块显然是众多数据结构中最通用,最容易被卡掉也是出题人最希望卡掉的作法。在一众神犇的奇思妙想下,大部分的 \(DS\) 都被各种分块卡过了,甚至一些较为复杂的树套树等等都是分块可能可以卡的作法。 分块的精髓在于块的大小,块大小为 \(\sqrt{n}\) 是最为常见的,因为它此时平衡了操作与查询之间 阅读全文
posted @ 2024-10-09 18:29 Zzzzzzzm 阅读(10) 评论(0) 推荐(0)
摘要: 思路 对于最短路树上的任意非根节点 \(u\)​,\(dist(root,u)=\)​ \(root\)​ 到 \(u\)​​​ 的最短路。最短路树上的边一般是正权值的,因为如果是负权值好像建树的复杂度就高达 \(O(n^3)\) 了,因为 \(dijkstra\) 无法保证正确性,而 \(floy 阅读全文
posted @ 2024-10-09 18:28 Zzzzzzzm 阅读(11) 评论(0) 推荐(0)
摘要: 性质 \(Link\) \(Cut\) \(Tree\) 是基于 \(Splay\) 与实链剖分实现的。 \(LCT\) 可以实现诸多操作: 查询、修改链上的信息 更换原树的根 动态连边、删边 动态维护连通性 \(LCT\) 在中序遍历的情况下总是深度严格单调递增的。每个节点仅包含于一个 \(Spl 阅读全文
posted @ 2024-10-09 18:27 Zzzzzzzm 阅读(12) 评论(0) 推荐(0)
摘要: \(Splay\) \(Splay\),一种平衡树,较大儿子的期望比例大概为 \(0.6\) 左右,优于 \(FHQ\_Treap\) 的 \(0.7\),也就是说一般情况下跑的是比较快的,时间复杂度在平衡树中算比较优秀。 \(Splay\) 的核心思想是旋转维持树的平衡,每次操作后就将操作节点调整 阅读全文
posted @ 2024-10-09 18:25 Zzzzzzzm 阅读(10) 评论(0) 推荐(0)
摘要: 思路 合并数组的时间复杂度是\(n\times v\),所以肯定在某些时候是无法通过的。这个时候我们可以考虑有些点是根本没有用到过的,所以用权值线段树来更新的好处在于它可以免去一些未出现的节点或者只有一方出现过的节点。 例题:[Vani有约会]雨天的尾巴 思路 首先输入一个树进行树上的两点之间的加减 阅读全文
posted @ 2024-10-09 18:23 Zzzzzzzm 阅读(15) 评论(0) 推荐(0)
摘要: 主席树 思路 主席树是可持久化线段树,换而言之就是可以记录历史版本。 首先想到每进行一次操作就重新新建一棵树,然而这样空间复杂度是巨大的,且有很多并未改变的点重新建立就被浪费了。因此考虑每次只重建被改变的点,对于单点修改而言也就是修改了叶节点到根节点上一条链的信息,空间复杂度就极大减小了。 构建一个 阅读全文
posted @ 2024-10-09 18:22 Zzzzzzzm 阅读(14) 评论(0) 推荐(0)
摘要: 思路 将数组用\(lowbit(x)\)​​​​划分,可以支持单点修改与区间查询,时间复杂度为\(O(n\log n)\)​​,常数小于线段树,不过可操作的内容较少,使用也较少。树状数组经过一些奇特的改造以后可以支持区间修改与单点查询,时间复杂度仍为\(O(n\log n)\)​,但是只支持区间加减 阅读全文
posted @ 2024-10-09 18:20 Zzzzzzzm 阅读(13) 评论(0) 推荐(0)
摘要: 思路 \(ST\) 表可以在 \(O(n\log n)\) 的预处理以后 \(O(1)\) 的解决 \(RMQ\) 问题,并且不能带修。 \(RMQ\) 问题有这样一个特质:重复计算并不会影响最终结果,例如计算一个点最大值的两次并不会改变最终的区间最大值,因此 \(ST\) 表的作法也由此而生。首先 阅读全文
posted @ 2024-10-09 18:16 Zzzzzzzm 阅读(3) 评论(0) 推荐(0)
该文被密码保护。 阅读全文
posted @ 2023-04-02 12:50 Zzzzzzzm 阅读(6) 评论(0) 推荐(0)
摘要: 分块 基本已经比较熟悉了,虽然也没什么能写出来都题,众数都还不太熟悉,更别说一些其他都复杂操作来。 蒲公英 就是分块众数模版了。 莫队 普通莫队 思想大概就是利用上一个询问可以快速修改到下一个询问来优化。 带修莫队 添加一维时间轴,类似于 \(CDQ\) 分治的操作,变为 \(3\) 维的操作,并套 阅读全文
posted @ 2022-02-18 18:48 Zzzzzzzm 阅读(56) 评论(0) 推荐(0)