摘要: 正在收集…… 阅读全文
posted @ 2024-09-25 17:37 zxh923 阅读(19) 评论(0) 推荐(0)
摘要: \(LCT\),全称 \(Link\) \(Cut\) \(Tree\),可以解决动态树问题。 首先要知道一条虚边连接了 \(2\) 个 \(splay\),而这些 \(splay\) 构成了 \(LCT\)。 动态树(LCT) \(isroot\) 操作 如果一个点不是根,则考虑它既不是父亲的左儿 阅读全文
posted @ 2024-09-18 20:04 zxh923 阅读(87) 评论(0) 推荐(0)
摘要: 边双连通分量 我们首先定义两种边:返祖边为从一个点指向其祖先的边;横叉边从某个点指向树中另一个子树中的点的边。两者统称为非树边。而剩下的边即为树边,树边也就是再搜索树上的边。 考虑设 \(dfn_i\) 为点 \(i\) 是第几个被搜索到的,\(low_i\) 表示点 \(i\) 通过走若干条边之后 阅读全文
posted @ 2024-09-13 16:58 zxh923 阅读(22) 评论(0) 推荐(0)
摘要: 强连通分量 我们首先定义两种边:返祖边为从一个点指向其祖先的边;横叉边从某个点指向树中另一个子树中的点的边。两者统称为非树边。而剩下的边即为树边,树边也就是再搜索树上的边。 我们定义 \(dfn_i\) 为 \(i\) 是第几个被 \(dfs\) 到的,\(low_i\) 从 \(i\) 出发走任意 阅读全文
posted @ 2024-09-13 09:23 zxh923 阅读(32) 评论(0) 推荐(0)
摘要: 全源最短路模板 Floyd 我们设 \(f_{i,j}\) 表示 \(i\) 到 \(j\) 的最短路,于是我们枚举中转点 \(k\),就有 \(f_{i,j}\leftarrow\min(f_{i,j},f_{i,k}+f_{k,j})\)。 于是简单枚举一下进行转移即可,时间复杂度 \(O(n^ 阅读全文
posted @ 2024-09-12 11:49 zxh923 阅读(21) 评论(0) 推荐(0)
摘要: 普通平衡树 我们这里着重介绍一下 \(fhq\) \(treap\)。 首先我们会用一个结构体存下平衡树的节点。这道题中需要存左右儿子编号,优先度(随机的一个值),点上存的数是多少,子树中有多少数。我们记作 \(l,r,rd,da,siz\)。 接下来我们一个一个讲解函数: \(newnode\) 阅读全文
posted @ 2024-09-11 21:38 zxh923 阅读(35) 评论(0) 推荐(0)
摘要: 可持久化线段树 看这个。 可持久化字典树 最大异或和 考虑设 \(s\) 为 \(a\) 的前缀异或和数组,我们最终的答案就是找一个 \(p\in[l-1,r-1]\),然后求出 \(s_n\operatorname{xor} x\operatorname{xor} s_p\)。 首先,对于最大异或 阅读全文
posted @ 2024-09-11 08:30 zxh923 阅读(19) 评论(0) 推荐(0)
摘要: 左偏树 可以发现左偏树的别名叫可并堆,就是可合并的堆。于是我们的主要操作便是合并。 我们定义外节点为左儿子或右儿子至少有一个为空的节点。我们定义外节点的 \(dist\) 为 \(1\),其余点的 \(dist\) 为到其子树内最近的外节点的距离加上 \(1\)。 左偏树是一棵二叉树,首先其具有堆的 阅读全文
posted @ 2024-09-09 20:26 zxh923 阅读(18) 评论(0) 推荐(0)
摘要: 消耗战 首先考虑朴素 \(dp\),设 \(f_u\) 表示使 \(u\) 的子树内的所有关键点都不与 \(u\) 连通的最小代价。如果当前在 \(u\),\(j\) 这个儿子是关键点,那么有转移 \(f_u\leftarrow f_u+val_{u\rightarrow j}\);否则有转移 \( 阅读全文
posted @ 2024-09-09 11:57 zxh923 阅读(30) 评论(0) 推荐(0)
摘要: 可持久化线段树 注意,它的全称为可持久化权值线段树。 例题 \(1\):可持久化线段树 首先我们考虑几个暴力: 对于每次询问,找出区间中的所有数,直接排序求第 \(k\) 小。这样做的时间复杂度为 \(O(nq\log n)\) 的。 对于每次询问,建出一棵权值线段树,然后权值线段树上二分查找即可。 阅读全文
posted @ 2024-09-06 15:48 zxh923 阅读(40) 评论(0) 推荐(0)