02 2022 档案
摘要:用处 快速查询一个数是否可以被一堆数异或出来 快速查询一堆数可以异或出来的最大 / 最小值 快速查询一堆数可以异或出来的第 大值 性质 原数列里的任何一个数都可以通过线性基里的数异或表示出来 线性基里任意一个子集的异或和都不为 一个数列可能有多个线性基,但是线性基里数的数量一
阅读全文
摘要:转对偶图 Lid , Rid 分别是每条边左右的区域的编号; to[x],fr[x] 分别是 指出去和指向 的边 (从左往右排列); void build(){ static queue <int> Q; Q.push(S); while(!Q.empty()){ int x
阅读全文
摘要:树上问题 有向无环图 DAG 连通性相关 2-sat 平面图 网络流 Prufer 序列
阅读全文
摘要:最小链覆盖 (最长反链) 最小链覆盖 最大匹配。 考虑首先每个点自成一条链,此时恰好有 条链,最终答案一定是合并(首尾相接)若干条链形成的。 将两点匹配的含义其实就是将链合并。 说明 Dilworth 定理:一个偏序集中的最长反链大小,等于其中最小不可重链覆盖大小。 对于
阅读全文
摘要:该算法的一大判断依据,DP 不可做 or 状态高,数据范围适合网络流。 最大流 Dinic 的实现 int S, T, ecnt = 1, head[N], cur[N], dep[N]; struct edge{ int nx, to, v; } e[M * 2]; inline void add
阅读全文
摘要:线段树的应用 很多可以支持合并的信息都可以维护,如 树的区间直径。
阅读全文
摘要:一种可以 高效处理 维空间信息 的数据结构。 在正确使用的情况下,复杂度为 . K-D Tree 的实现 建树 随机一维选择最中间的点为当前子树的根,每个节点维护当前点的坐标,已经整个子树的矩形坐标。 Pink Rabbit 说随机选维度没
阅读全文
摘要:Hash 的思想 Hash 的核心思想在于,将输入映射到一个值域较小、可以方便比较的范围。 这里的 “值域较小” 在不同情况下意义不同。 在哈希表中,值域需要小到能够接受线性的空间与时间复杂度。 在字符串哈希中,值域需要小到能够快速比较。 同时,为了降低哈希冲突率,值域也不能太小。 Hash 的实现
阅读全文
摘要:实现 void ins(int c){ int np = ++dcnt, p = lst; lst = np; t[np].len = t[p].len + 1, t[np].eps = 1; while(p && !t[p].ch[c]) t[p].ch[c] = np, p = t[p].fa;
阅读全文