摘要: 1. 例题 1.1. 只因点问题 给定一个数组,支持区间加、区间对 \(u\) 取 max,求出从左往右数,下标 \(\ge x\) 的第一个值 \(\ge y\) 的位置。 考虑线段树上二分。 阅读全文
posted @ 2024-07-22 08:23 心灵震荡 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 1. 莫队(Mo-Queue) 1.1. 普通莫队 将询问按第一关键字为左端点块编号,第二关键字为右端点排序。 从 \(l=1, r=0\) 开始,对每个询问依次让 \(l, r\) 移动到询问的左右端点上,期间动态维护当前区间的答案。 为避免重复操作,最好保证时时刻刻都有 \(l + 1 \le 阅读全文
posted @ 2024-07-22 08:23 心灵震荡 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 1. 强连通分量 1.1. 定义 在有向图中,选取一个点集 \(S\),若对于 \(S\) 中的任意两点 \(u, v\),都满足 \(u\) 可以到达 \(v\),则称 \(S\) 是强连通的。 强连通分量是图中一个极大的强连通的点集。 性质:把一个有向图通过强连通分量缩点后,新的图是一个 DAG 阅读全文
posted @ 2024-07-20 14:27 心灵震荡 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 1. 倍增二分 一个奇怪的 trick,二分+倍增的复杂度是 \(O(n \log^2 n)\),但注意到二分和倍增的结构相近,所以可以写在一起。 实际上倍增求 LCA 就是用这个 trick 实现的,代码如下。 for(int i = 19; i >= 1; i--) if(to[x][i] 不满 阅读全文
posted @ 2024-07-19 16:33 心灵震荡 阅读(5) 评论(0) 推荐(0) 编辑
摘要: Ex-GCD、Ex-CRT、逆元、Lucas 定理、费马小定理、BSGS、Ex-BSGS、阶与原根 阅读全文
posted @ 2024-07-17 12:15 心灵震荡 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 连通性问题 1. 强连通分量 1.1. 算法解析 在 Tarjan 算法中为每个结点 \(u\) 维护了以下几个变量: \(dfn_u\):深度优先搜索遍历时结点 \(u\) 被搜索的次序,即 \(u\) 的 DFS 序。 \(low_u\):不经过 \(u\) 的祖先能到达的最小的 \(dfn\) 阅读全文
posted @ 2024-07-13 09:10 心灵震荡 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 2-SAT 问题 1. 模型 有 \(n\) 个布尔类型的变量 \(x_1, x_2, \ldots, x_n\),有 \(m\) 条限制形如 \(x_i \space [\operatorname{or}/\operatorname{and}]\space x_j=[1/0]\). 求一组符合要求 阅读全文
posted @ 2024-07-06 18:19 心灵震荡 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 笛卡尔树(Cartesian Tree) 1. 定义 根据序列构造的满足以下性质的树: 二叉搜索树性质(BST):\(key_{ls} \le key_x \le key_{rs}\),\(key\) 默认为下标。 堆性质:\(val_{x} \le val_{ls} \le val_{rs}\). 阅读全文
posted @ 2024-07-05 09:56 心灵震荡 阅读(4) 评论(0) 推荐(0) 编辑
摘要: 插头 DP 定义 基于连通性状态压缩的 DP. 一个方向的插头存在表示这个格子在这个方向可以与外面相连。 状态 一个 \(n \times m(n, m \le 12)\) 的棋盘,有的格子是障碍,问共有多少满足要求的回路? 本题中,所有非障碍格子一定是从一个插头进、一个插头出,刚好用两个插头,方案 阅读全文
posted @ 2024-07-05 09:55 心灵震荡 阅读(3) 评论(0) 推荐(0) 编辑
摘要: 可并堆 / 左偏树 左偏树 外节点:只有一个儿子或没有儿子的节点。 距离:一个节点到离他最近的外节点的距离,即两节点之间的路径权值和。特别地,外节点的距离为 \(0\),空节点的距离为 \(-1\). 左偏树:满足如下性质的二叉树: 堆性质:任何节点的权值小于等于儿子节点的权值,即 \(val_{f 阅读全文
posted @ 2024-07-01 09:37 心灵震荡 阅读(3) 评论(0) 推荐(0) 编辑