随笔分类 -  学习笔记

摘要:Nim 游戏 定义 有 \(n\) 堆石子, 每堆有 \(a_i\) 个石子, 每次从一堆中取任意个石子, 无法操作者败 结论 先手必胜的条件: \(\bigoplus_{i = 1}^n a_i \not = 0\), SG 函数 定义 设一个局面为 \(A\), 它的后继状态集合为 \(E_A\ 阅读全文
posted @ 2021-01-08 08:48 BruceW 阅读(407) 评论(0) 推荐(1)
摘要:前置知识 \[ \begin{aligned} (\ln x)' &= \frac{1}{x} \\ (\exp x)' &= x \\ \end{aligned} \] 复合函数的求导(链式法则) \[ (g\circ f)' (x) = g(f(x))'f'(x) \] 多项式求逆,分治FFT。 阅读全文
posted @ 2020-12-03 15:22 BruceW 阅读(461) 评论(0) 推荐(1)
摘要:描述 已知 \(g(x)\),求 \(f(x)\) 满足 \(g(f(x)) \equiv 0 \pmod{x^n}\)。 方法 倍增。 设 \(f_0(x)\) 满足 \(g(f_0(x)) \equiv 0 \pmod{x^{\lceil \frac{n}{2} \rceil}}\)。 将 \( 阅读全文
posted @ 2020-12-03 15:17 BruceW 阅读(147) 评论(1) 推荐(0)
摘要:目的 用幂级数 (也就是 OI 中的 "多项式") 来近似地表示一个函数. 大致思路 假设我们需要表示出的函数为 \(g(x)\), 最后得到的多项式为 \(f(x)\). 容易得到, 若 \(f(x)\) 的任意阶导数都与 \(g(x)\) 的对应阶导数相等, 那么 \(f(x) \Leftrig 阅读全文
posted @ 2020-12-03 15:16 BruceW 阅读(381) 评论(0) 推荐(1)
摘要:算法用途 对 \(n-1\) 次多项式 \(g(x)\), 求 \(f(x)\), 满足 \[ [x^i]f(x) \equiv \sum_{j = 0}^{i - 1} ([x^j]f(x)) \times ([x^{i-j}]g(x)) \] 算法过程 总思路: 分治. 对于 \([x^{l \ 阅读全文
posted @ 2020-10-27 19:37 BruceW 阅读(118) 评论(0) 推荐(0)
摘要:板子传送门:door: 常见转化 动态二维数点 (即带修改的二维数点) 实现方法 离线做法 CDQ 分治 先按第一维排序,然后在分治过程中,就能保证左儿子的第一维严格小于右儿子的第一维(若有第一维相等的情况,则需在排序时按照第二维排序,以此类推),那么左儿子对右儿子的贡献就是一个二维偏序问题,维护两 阅读全文
posted @ 2020-10-17 15:25 BruceW 阅读(430) 评论(0) 推荐(0)
摘要:算法用途 求 \[ \sum_{i = 0}^{n} [i\ \&\ n = i] a_i \] (实际上, 这只是高维前缀和的一种特殊形式, 即每一维的大小都为 2.) 算法过程 我们计算矩阵前缀和时, 通常用的是容斥的方法. 设当前要计算 \(D\) 维前缀和, 容斥的复杂度为 \[ \sum_ 阅读全文
posted @ 2020-07-27 22:26 BruceW 阅读(506) 评论(0) 推荐(0)
摘要:用途 解关于 \(x\) 的线性同余方程组. 形如 \[ \left\{ \begin{aligned} x &\equiv c_1 \pmod{p_1} \\ x &\equiv c_2 \pmod{p_2} \\ x &\equiv c_3 \pmod{p_3} \\ &\ \ \vdots \ 阅读全文
posted @ 2020-07-11 21:54 BruceW 阅读(155) 评论(0) 推荐(0)
摘要:欧拉函数 定义 ​ $1 \sim N$ 中与 \(N\) 互质的数的个数被成为欧拉函数, 记为 \(\varphi(N)\). ​ 若在算数基本定理中 \(N=p_1^{c_1}p_2^{c_2} \cdots p_k^{c_k}\), 则 \[ \varphi(N)= N * \Pi_{i=1} 阅读全文
posted @ 2020-06-18 19:14 BruceW 阅读(1112) 评论(0) 推荐(2)
摘要:「学习笔记」扩展KMP (简) 【模板】扩展 KMP(Z 函数) 用途 求文本串 \(s\) 的每一个后缀与模式串 \(t\) 的 \(LCP\) (最长公共前缀). 过程 思路 : 对新的位置匹配时利用前面已匹配的信息. 维护一个一匹配的右边界, 每次根据前面的信息取得一个初始匹配值, 然后再对右 阅读全文
posted @ 2020-06-17 12:19 BruceW 阅读(131) 评论(0) 推荐(0)
摘要:「学习笔记」字符串最小表示法 (简) 【模板】最小表示法 过程 维护三个指针 \(i,j,k\). \(i,j\) 表示目前正在进行比较的两个起始位置, 保证 \(i<j\), \(k\) 表示这两个起始位置对应的串的 \(LCP\) 长度. 每次对 \(k++\) , 然后根据 \(s[i+k]\ 阅读全文
posted @ 2020-06-17 11:58 BruceW 阅读(169) 评论(0) 推荐(0)
摘要:拆点 : 将每个 bool 变量拆成 0, 1 两个点. 连边 : 将限制条件转化为连边. 图是 DAG 时, 对于每个 bool 变量, 合法点的拓扑序大于非法点. 证明 : 若某个 bool 变量拆分成的两个点为 u,v , 若 u 为非法点, 则存在一条从 u 到 v 的路径, 所以 v 的拓 阅读全文
posted @ 2020-06-10 11:58 BruceW 阅读(185) 评论(0) 推荐(0)
摘要:前置知识 Dirichlet 卷积, 数论分块 杜教筛 概念 ​ 杜教筛用于解决数论函数 \(f(n)\) 的前缀和问题, 即求 : \[ S(n)=\sum_{i=1}^{n}f(i) \] 结论 ​ 对于任意数论函数 \(g(n)\) , 都有 \[ \sum_{i=1}^{n}\sum_{d| 阅读全文
posted @ 2020-05-25 11:43 BruceW 阅读(116) 评论(0) 推荐(0)
摘要:前置知识 引理一 \[ \forall a,b,c \in \mathbb{Z}, \lfloor\frac{a}{bc}\rfloor = \lfloor\frac{\lfloor{\frac{a}{b}}\rfloor}{c}\rfloor \] 证明 : 设 \[ \frac{a}{b}=\l 阅读全文
posted @ 2020-05-24 20:08 BruceW 阅读(239) 评论(0) 推荐(0)
摘要:「学习笔记」向量外积(叉乘) 一 基本概念 一) 定义 向量 \(\vec a, \vec b\) 的向量积为一个向量, 记为 \(\vec a \times \vec b\), 满足 \(| \vec a \times \vec b| =|\vec a||\vec b|\sin \theta\), 阅读全文
posted @ 2020-05-20 15:29 BruceW 阅读(2673) 评论(0) 推荐(0)
摘要:引子 \(LCP\)...只能二分加 \(HASH\) 吗...? 算法 ​ 为了描述方便, 我们把 "后缀 \(i\) " 定义为 : 以下标 \(i\) 为起点的后缀. 初始目的 后缀数组的主要过程, 实际上就是为了求两个数组. \(rank[i]\) : 后缀 \(i\) 的排名. \(sa[ 阅读全文
posted @ 2020-01-16 19:43 BruceW 阅读(133) 评论(0) 推荐(0)
摘要:「学习笔记」带花树 引子 最大匹配问题, 二分图可以用匈牙利算法, 那一般图呢......? 算法 一 思路 二分图中的匈牙利算法, 是一个 \(O(nm)\) 的算法, 每次寻找增广路的复杂度为 \(O(m)\). 之所以能达到这个复杂度, 是因为在二分图上有一个结论 : ​ 若在寻找以 \(u\ 阅读全文
posted @ 2020-01-03 21:56 BruceW 阅读(130) 评论(0) 推荐(0)
摘要:「学习笔记」动态点分治 引子 点分治是个好东西, 可万一树上的权值需要修改呢...... 算法过程 点分治, 计算出初始数据. 构建点分树. 在点分树上进行数据维护. 点分树 : 把原树在点分治时的各级重心连接起来的数据结构, 称为点分树. 它有一个非常优美的性质 : 树高 规模为 \(\log n 阅读全文
posted @ 2019-12-30 22:33 BruceW 阅读(118) 评论(0) 推荐(0)
摘要:「学习笔记」点分治 引子 点分治, 其实应该叫 "树上点分治". 主要用于解决 "树上路径问题" (我乱起的名字). 比如, 树上是否存在长为 \(k\) 的路径, 树上长小于 \(k\) 的路径有多少条等等. 点分治可以概括为 : 分治 + 重心 + 桶 (就目前我做过的几道题来说都是这个套路) 阅读全文
posted @ 2019-12-30 11:44 BruceW 阅读(127) 评论(0) 推荐(0)
摘要:基本信息 用途 : 多项式乘法 时间复杂度 : \(O(nlogn)\) (常数略大) 算法过程 基本思路 求 \(H(x) = G(x) \times F(x)\) 直接从系数表达式转化为系数表达式比较难搞, 所以考虑先把 \(F(x),\ G(x)\) 转化为点值表达式, 再 \(O(n)\) 阅读全文
posted @ 2019-12-29 20:44 BruceW 阅读(397) 评论(0) 推荐(0)