摘要: 边双连通分量 我们首先定义两种边:返祖边为从一个点指向其祖先的边;横叉边从某个点指向树中另一个子树中的点的边。两者统称为非树边。而剩下的边即为树边,树边也就是再搜索树上的边。 考虑设 \(dfn_i\) 为点 \(i\) 是第几个被搜索到的,\(low_i\) 表示点 \(i\) 通过走若干条边之后 阅读全文
posted @ 2024-09-13 16:58 zxh923 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 强连通分量 我们首先定义两种边:返祖边为从一个点指向其祖先的边;横叉边从某个点指向树中另一个子树中的点的边。两者统称为非树边。而剩下的边即为树边,树边也就是再搜索树上的边。 我们定义 \(dfn_i\) 为 \(i\) 是第几个被 \(dfs\) 到的,\(low_i\) 从 \(i\) 出发走任意 阅读全文
posted @ 2024-09-13 09:23 zxh923 阅读(3) 评论(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 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 普通平衡树 我们这里着重介绍一下 \(fhq\) \(treap\)。 首先我们会用一个结构体存下平衡树的节点。这道题中需要存左右儿子编号,优先度(随机的一个值),点上存的数是多少,子树中有多少数。我们记作 \(l,r,rd,da,siz\)。 接下来我们一个一个讲解函数: \(newnode\) 阅读全文
posted @ 2024-09-11 21:38 zxh923 阅读(3) 评论(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 阅读(1) 评论(0) 推荐(0) 编辑
摘要: 左偏树 可以发现左偏树的别名叫可并堆,就是可合并的堆。于是我们的主要操作便是合并。 我们定义外节点为左儿子或右儿子至少有一个为空的节点。我们定义外节点的 \(dist\) 为 \(1\),其余点的 \(dist\) 为到其子树内最近的外节点的距离加上 \(1\)。 左偏树是一棵二叉树,首先其具有堆的 阅读全文
posted @ 2024-09-09 20:26 zxh923 阅读(1) 评论(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 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 可持久化线段树 注意,它的全称为可持久化权值线段树。 例题 \(1\):可持久化线段树 首先我们考虑几个暴力: 对于每次询问,找出区间中的所有数,直接排序求第 \(k\) 小。这样做的时间复杂度为 \(O(nq\log n)\) 的。 对于每次询问,建出一棵权值线段树,然后权值线段树上二分查找即可。 阅读全文
posted @ 2024-09-06 15:48 zxh923 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 扩展 KMP/exKMP(Z 函数) 首先我们求出 \(ne\) 数组。代表 \(b\) 与 \(b\) 的每一个后缀的最长公共前缀长度。 我们设当前要求 \(ne_x\),且 \(k\) 为使得 \(p=k+ne_k-1\) 最大的位置且 \(0\le k<x\),同时 \(p\) 为 \(k+n 阅读全文
posted @ 2024-09-04 20:58 zxh923 阅读(1) 评论(0) 推荐(0) 编辑
摘要: Rudolf and the Ticket 算法:枚举。 题意简述:从 \(a\) 数组中和 \(b\) 数组中各选出一个数,使得它们的和不超过 \(k\),求选法数量。 考虑直接枚举每一种可能的搭配即可。 Rudolf and 121 算法:贪心。 题意简述:定义一次操作为,该位置上的数减去 \( 阅读全文
posted @ 2024-09-04 20:58 zxh923 阅读(3) 评论(0) 推荐(0) 编辑