一、 反演与容斥
a) 综述:
- 定义:反演就是序列函数的互反关系,即转移矩阵互逆。
- 作用:将“恰好”之类的严格,放宽成更简洁的条件,方便统计。
- 另一种理解:求出一个不是那么正确的答案,用反演来修正式子。
- 分类:二项式反演、斯特林反演、莫比乌斯反演、欧拉反演、Min-max 反演、集合反演等等,下面分别介绍。
b) 二项式反演:
- 形式:
- 使用:题目中若是出现“恰好”k 个满足条件,就可以反演成“指定”k 个满足条件,方便计数;但是实际中可能会出现没想到反演的情况。
利用(差)卷积加速二项式反演:将式子化成如下形式,就可以是 O(nlogn)。
𝑔� 𝑘! = � (−1)��� (𝑘 − 𝑖)! ⋅ 𝑓� 𝑖! � ��� 𝑜𝑟 𝑔�𝑘! = � (−1)��� (𝑖 − 𝑘)! ⋅ 𝑓�𝑖! ���c)斯特林反演:
同理,可以目瞪出它的剩下三种形式;使用上比较有技巧(指我不会)。
d)数论反演:
- 莫比乌斯反演:
可以用来解决背包计数的逆问题,并且可以 nlnn 计算。
- 欧拉反演:
可以用于解决带有 gcd(x,y) 的一类计数问题,例如 2020D2T3。
e)Min-max 容斥:
另有拓展 Min-max 容斥:
喜闻乐见,它对于期望也成立;对于求 n 个东西期望什么时候全部完工之类问题的时候就可以使用;数据范围也不一定特别小,因为有一些小 trick。
f)集合反演:
从而可以得到一个重要式子:
可以用来带“交集”形式的式子,详情请见《数树》。
g)单位根反演
二、 经典数列:
a)组合数:
- 定义:\(\binom nm=\frac{n!}{m!(n-m)!}\)
- 递推式:\(\binom nm=\binom{n-1}m+\binom{n-1}{m-1}\),\((n+1)\binom nm=(m+1)\binom{n+1}{m+1}\)
- 求和式中提取公因式常用的式子:\(\binom nm\binom mr=\binom nr\binom{n-r}{m-r}\)
- 生成函数形式(用于解决相当多的组合数求和/卷积):\(\binom nm=\left[x^m\right](1+x)^n\)
例如在 2017 的《组合数问题》中就可以用这种方法快速解决问题。 - Lucas 定理:\(\binom nm\bmod p=\binom{\left\lfloor n/p\right\rfloor}{\left\lfloor m/p\right\rfloor}\binom{n\bmod p}{m\bmod p}\bmod p\)
- Kummer 定理:\(v_p\left(\binom nm\right)=\frac{S_p(m)+S_p(n-m)-S_p(n)}{p-1}\)。前置:\(v_p(n!)=\frac{n-S_p(n)}{p-1}\)。其中 Sp(n) 表示 n 在 p 进制下的各位数字和,vp(n) 表示 n 中 p 的幂次。
b)第一类斯特林数:
- 定义:n 个互不相同元素分成 m 个互不区分环排列的方案数,记作 \({n\brack m}\)
- 递推式:\({n\brack m}={n-1\brack m-1}+(n-1){n-1\brack m}\)
- 重要式子:
c)第二类斯特林数:
- 定义:n 个互不相同元素分成 m 个互不区分集合的方案数,记作 \({n\brace m}\)
- 递推式:\({n\brace m}={n-1\brace m-1}+m{n-1\brace m}\)
- 重要式子:
下降幂可以换成组合数乘阶乘。
f) 斐波那契数:
- 定义:\(F_n=F_{n-1}+F_{n-2}\),\(F_n=\frac1{\sqrt5}\left(\left(\frac{1+\sqrt5}2\right)^n-\left(\frac{1-\sqrt5}2\right)^n\right)\)
- 性质:
g) 分拆数
五边形数:1,2,5,7,12,15,22,26...i*(3*i-1)/2,i*(3*i+1)/2
分拆数:p[n]=p[n-1]+p[n-2]-p[n-5]-p[n-7]+p[n-12]+p[n-15]-...+p[n-i*[3i-1]/2]+p[n-i*[3i+1]/2]-...-...+...+...-...-...
三、 数论部分:
a) 线性求逆元:
线性求出集合的逆元。
b) 扩展欧拉定理:
c) 快速乘、扩展欧几里得与扩展中国剩余定理的板子
d) 迪利克雷卷积相关:
e) 线性筛与杜教筛:
- 线性筛:只要函数满足积性就可以使用线性筛。
- 杜教筛:设 f 和 g 是积性函数,S 是 f 的前缀和,于是:
f) 原根:
- 阶数:设 \(x= \delta_m(a)\) 表示最小的 x 满足 \(a^x\bmod m=1\)。
- 原根:满足 \(\delta_m(a)=\varphi(m)\) 的所有 a。
- 原根判定:x 是 m 的原根当且仅当对于任意 \(\varphi(m)\) 的非自身且非 1 因数都满足 \(x^d\bmod m\neq1\)
- 最小原根大小:g<=n^0.25
g) BSGS:
用于求解 \(A^x=B\pmod p\),本质上就是分块。
h) 积性函数结论
四、 生成函数:
a) Ordinary Generating Function
- 定义:\(f(z)=\sum f_iz^i\),形容一个无标号组合类。
- 加法运算:表示合并两个集合。
- 乘法运算:表示两个无标号集合的笛卡尔积。
- 常用的组合构造:
b) Exponential Generating Function
- 定义:\(f(z)=\sum f_i\frac{z^i}{i!}\),形容一个无标号组合类。
- 加法运算:表示合并两个集合。
- 乘法运算:表示有标号类的有序合并。
- 重要的组合构造:基本同理。例如:1/(1-A) 表示 SEQ 构造,expA 表示有标号无顺序组合等等。
- 关于泰勒展开:下面是一些常用式子的 EGF 的封闭形式:
c) 常用方法:
- 组合构造的逆构造(方程解): - 已知𝐵和𝐵 = exp𝐴,那么就可以用ln 𝐵求出𝐴。 - 背包的𝑃𝑆𝐸𝑇和𝑀𝑆𝐸𝑇(即 01 背包和完全背包)均可以用ln 𝐴和莫比乌斯反演求逆。 - 列出方程来大力解出生成函数的封闭形式。 - 位移算子: - OGF 的平移算子:𝐿𝑒𝑓𝑡(𝐴) = ���� � , 𝑅𝑖𝑔ℎ𝑡(𝐴) = 𝐴𝑥 + 𝐶。 2. OGF 的按位放大算子:𝑓(𝐴) = ��� �� + 𝐶。 3. EGF 的平移算子:𝐿𝑒𝑓𝑡(𝐴) = �� �� , 𝑅𝑖𝑔ℎ𝑡(𝐴) = ∫ 𝑓𝑑𝑥 � � + 𝐶。 (这也是为什么会有需要解微分方程的情况,也就出现了多项式𝑡𝑎𝑛之类 东西的组合意义——微分方程的一个解)。 iii. 取模的 Trick: 1. 对𝑥� − 1取模来实现下面这类求和: �𝑛 𝑟� + � 𝑛 𝑘 + 𝑟� + � 𝑛 2𝑘 + 𝑟� + ⋯ = [𝑥�](1 + 𝑥)�𝑚𝑜𝑑 𝑥� − 1 2. 循环卷积:对于模𝑥� − 1意义下的多项式乘法。 iv. 拉格朗日反演: 𝐺�𝐹(𝑥)� = 𝑥 → 𝐹� = 1 𝑛 [𝑥��] ⋅ 1 𝐺�(𝑥) = 1 𝑛 [𝑥���] ⋅ � 𝑥 𝐺(𝑥)� � 𝐺�𝑓(𝑥)� = 𝑥 → [𝑥�]𝐻�𝐹(𝑥)� = 1 𝑛 [𝑥��] ⋅ 𝐻�(𝑥) ⋅ 1 𝐺�(𝑥) 可以用来解很多的方程;第二个式子则可以用来求出与解相关的式子的值。 v. Equivalence theorem (Kleene–Rabin–Scott)等价定理: 设𝑇为一个确定性有限状态自动机的矩阵表示,𝑣是终止节点的集合, 𝑢 = (1,0,0,0,0,… ),于是可以得出这个字符串类的 OGF 是: 𝐿(𝑧) = 𝑢(1 − 𝑧𝑇)��𝑣 本质上和高斯消元非常类似。五、格路计数
https://www.luogu.com/article/6ovnnikq
以下定义都是基于每次只能往右上或左下走这一条件的。
也就是说:当你处于 (x,y) 时,你只能走到 (x+1,y+1) 或 (x+1,y-1)。
我们认为一条路径与一条直线的相交次数就是有多少个整点既在路径上又在直线上。
一条路径与一条直线的不相交就是相交次数为 0,反过来相交就是相交次数不为 0。
记号 [a,b,c,d] 是从 (a,b) 到 (c,d) 的方案数。
记号 <a,b,c,d,k> 就是从 (a,b) 走到 (c,d) 且与直线 y=k 相交的路径数。
记号 {a,b,c,d,k} 就是从 (a,b) 走到 (c,d) 且与直线 y=k 不相交的路径数。
记号 [a,b,k] 就是从 (0,0) 走到 (a,b) 的所有路径与直线 y=k 相交次数之和。
记号 |a,b,k1,k2| 就是从 (0,0) 走到 (a,b) 且与直线 y=k1 和 y=k2 都不相交的路径数。
记号 ⟨a,b,k1,k2⟩ 就是从 (0,0) 走到 (a,b) 且与直线 y=k1 相交而与 y=k2 不相交的路径数。
接下来罗列的是以下每一框求出来的结果。
给你一个括号序列 S。你要在左右两头加上总共 n 个括号使整个括号序列合法。求不同的方案数。
如果在左边添加上的括号序列为 A,在右边添加上的括号序列为 B,则当两个方案中的 A 或 B 有一个不同时就视为不同。
将 S 可以配对的括号先配对掉,最后只剩下 a 个 ) 与 b 个 (,如下:))))(((
答案为 \(\binom{n+1}{(n+a+b)/2+1}\)
六、计算几何
Pick 定理:给定顶点均为整点的简单多边形,皮克定理说明了其面积 \({\displaystyle A}\) 和内部格点数目 \({\displaystyle i}\)、边上格点数目 \({\displaystyle b}\) 的关系:\({\displaystyle A=i+{\frac {b}{2}}-1}\)。
七、图度数序列
兰道定理:竞赛图出度序列从小到大排序,记为 \(a\),有 \(\forall 1\le k\le N,\sum_{i=1}^ka_i\ge\binom k2\)。由于出度越大,缩点成链的位置越浅,故可以说所有取等位置之间构成 SCC。
Erdős–Gallai 定理:一个简单无向图的度数序列 a(降序)合法当且仅当 \(\forall 1\le k\le N,\sum_{i=1}^ka_i\le k(k-1)+\sum_{i=k+1}^N\min(k,a_i)\)