炫酷反演魔术
command_block · · 个人记录
最近你可能在本Blog看到许多这样的小记,这完全属于省选之前的游击战术,内容不保证严谨,也不保证大多数人能看懂。
如果省选过后有时间我会来仔细更新并且把这些文字去掉的。
广告(配合食用) : 多项式计数杂谈 (万字长文,公式恐惧症患者请谨慎入坑)
本文将介绍一些 OI 中常见反演的证明和应用。
1.基本反演推论
首先,“反演”这个词,就是指 : 两个函数(数列)之间的双向(求和)关系。
比如说
那么反过来
这一对关系就称作反演关系。
我们定义一个矩阵
也就是说,
已知
不难想到,求关系矩阵
比如,上面的前缀和的关系矩阵即为
即
那么相应的,差分的关系矩阵
即
我们把两个矩阵乘起来试试看:
也就是说,
即任意的两个反演关系。
根据上问我们知道矩阵
那么有如下结论(二维情况):
也即 : 多维反演,系数
构造新的大矩阵
欲证
这个证明可以很容易地推广到更多维。
- 反演花名册
反演是帮助我们转化问题的利器,然而反演关系的构造往往并不容易。
下面列出的是一些经典的反演。
-
二项式反演
-
莫比乌斯反演
-
Min-Max反演(容斥)
-
斯特林反演
-
集合反演
-
单位根反演
我们来一一介绍吧 :
2.二项式反演
由于二项式系数在计数问题中十分常见,很多芝士需要二项式反演来支持。
而且这玩意相对不那么困难,可以用来练手,先熟悉一下反演的风格。
我尽量把证明写得详细一点。
形式 ① :
非常对称。即
-
(经典代数)
\color{blue}\text{证明:} (A*A)[d,t]=\sum\limits_{i=1}^∞A[d,i]A[i,t] =\sum\limits_{i=t}^d(-1)^i\dbinom{d}{i}(-1)^t\dbinom{i}{t} =(-1)^t\sum\limits_{i=t}^d(-1)^i\dfrac{d!i!}{i!(d-i)!t!(i-t)!} - 我们想办法提取一个
\dbinom{d}{t} 的常量出来
后面部分
=\dfrac{d!}{t!(d-t)!}\dfrac{(d-t)!}{(d-i)!(i-t)!} 注意到
i-t=(d-t)-(d-i) ,得到:=\dbinom{d}{t}\dfrac{(d-t)!}{(d-i)!((d-t)-(d-i))!}=\dbinom{d}{t}\dbinom{d-t}{d-i} 原式
=(-1)^t\dbinom{d}{t}\sum\limits_{i=t}^d(-1)^i\dbinom{d-t}{d-i} 平移使得下界为
0 ( 把每个i 减去t ) 得到\sum\limits_{i=t}^d(-1)^i\dbinom{d-t}{d-i}=\sum\limits_{i=0}^{d-t}(-1)^{i+t}\dbinom{d-t}{d-t-i} 提取常量,使用二项式系数的对称性
=(-1)^t\sum\limits_{i=0}^{d-t}(-1)^{i}\dbinom{d-t}{i} 由二项式定理得:
=(-1)^t(1-1)^{d-t} 原式
=(-1)^{t+t}\dbinom{d}{t}(1-1)^{d-t}=[d=t] 于是
A*A=I ,反演成立。 - 我们想办法提取一个
使用基本反演推论移动
这个形式更为常用。因为做题的时候不会凑出
还有另一种使用指数生成函数的证明方法。
-
(EGF)
\color{blue}\text{证明:} F[n]=\sum\limits_{i=0}^n\dbinom{n}{i}G[i] \dfrac{F[n]}{n!}=\sum\limits_{i=0}^n\dfrac{1}{(n-i)!}\dfrac{G[i]}{i!} 辨识出卷积形式,以及
e^x=\sum\limits_{i=0}\dfrac{x^i}{i!} F*e^x=G\quad\Longleftrightarrow\quad G=F*e^{-x} \dfrac{G[n]}{n!}=\sum\limits_{i=0}^n\dfrac{(-1)^{n-i}}{(n-i)!}\dfrac{F[i]}{i!} G[n]=\sum\limits_{i=0}^n(-1)^{n-i}\dbinom{n}{i}F[i] 非常简洁,建议熟悉生成函数理论的同学使用这种。
使用基本反演推论转置形式 ② 的矩阵(简单地把两个维度交换),能够得到形式 ④:
( 为什么不转置①?因为那个矩阵是不对称的 )
实际题目中超出一定范围的
移动
至此,我们已经集齐了二项式反演的四种形式。
接下来,让我们看看经典应用。
可以去这里提交 : P1595 信封问题
一个排列
我们设
正面求解问题较为困难,我们先从
考虑所有的排列,分别可能有
假如有
所以
多么眼熟啊! 这不就是二项式反演吗?
使用(形式②)反演公式能够得到 :
我们只需要预处理阶乘(逆元)以及
通过这个小问题,可以发现,反演的应用难点并不在于公式本身,而在于拼凑出和公式对应的组合意义。
还有另一种更加易于理解,也更常用的推导方法 : 钦定法。
我们称满足
设
设
对于
则有
这就是和二项式反演完美契合的组合意义!使用反演公式可得 :
求
先选出
则有
代入可得
我们要求的
(当
- 形式② : NTT加速二项式反演
已知
按照上式暴力求和计算
在前面我们已经辨认出卷积
题目 : P4491 [HAOI2018]染色
题解 P4491 【[HAOI2018]染色】
-
形式
④ : -
**题意** : 有一棵 $2m$ 个点的有根树,其中有 $m$ 个黑点, $m$ 个白点。 将黑点和白点分别标号 $1...m$。 如果第 $i$ 个黑点和第 $i$ 个白点之间有祖孙关系,则记为好事件。(容易发现一共只有 $m$ 个事件) 求好事件的个数恰好为 $0...m$ 的(指定顺序的)方案数。$m\leq 2500$。
直接计算相当困难,我们发现“恰好”是最大的障碍,因为其不仅要求有
考虑打破“恰好”的限制,改为 : 钦定
这样的好处是,对于其余事件的影响被忽视了,我们只需要关注好事件。
设
首先不考虑根,好事件的叠加就是经典的加法卷积。
令
则有
一个经典的结论是,使用子树大小剪枝即可做到
然后考虑根和子树能够产生的好事件。不妨设根为黑色,白色类似。
设
则有
意思就是 : 从剩余的
设
设
有
二项式反演可得
题目允许我们暴力
-
补充习题 :
- CF1228E Another Filling the Grid
二维容斥,也可以从二维二项式反演理解。
进阶版 : CF997C Sky Full of Stars
-
[数学记录]P4921 烧情侣
-
题解 P5339 【[TJOI2019]唱、跳、rap和篮球】
-
P5400 [CTS2019]随机立方体
题解 P5400 【[CTS2019]随机立方体】
- [数学记录]P5401 [CTS2019]珍珠
3.莫比乌斯反演
这一类反演关系非常特殊,可以用迪利克雷卷积来描述。
莫比乌斯反演与数论函数
4.Min-Max反演(容斥)
Min-Max容斥小记
5.斯特林反演
基本形式的证明请见 : “多项式计数杂谈”,这里直接给出四种形式。
-
例题 : [2018雅礼集训1-16] 方阵
提交可以去 Vjudge TopCoder-13444 CountTables 。
题意 : 给出一个
n×m 的矩阵,每个位置可以填上[1,c] 中的任意整数。要求填好后任意两行互不等价,且任意两列互不等价。两行或两列等价当且仅当对应位置完全相同,求方案数。
行和列之间的限制有交,不便处理。不妨先只考虑行的限制。
设
任意一个行的方案数为
设
能得到 :
组合意义 : 枚举
实际上就是考虑 “划分”。将等价的部分划分到一起,即蕴含全部不等价的方案。
使用斯特林反演可得 :
评测记录
咕了。找不到题做。
6.集合反演
莫比乌斯反演就是在因子多重集上的反演。某种意义上讲,是这套理论的子集。
所以,很多莫反的技巧可以迁移过来。
-
莫反中 $\gcd$ 就相当于取交集,注意到 $[d|(x,y)]=[d|x][d|y]$. 类似地也有 $[S⊆(X∩Y)]=[S⊆X][S⊆Y]$ , 可以把交集变得独立。 -
由 $\sum\limits_{d|n}\mu(d)=[n=1]$ ,我们才能莫比乌斯反演. 我们同样也需要 $\sum\limits_{S⊆U}\mu(S)=[U=\varnothing]$ ,不难发现 $\mu(x)=(-1)^{|S|}$ 即可。这是个经典构造 : 奇负偶正。 - **理解** : 设全集大小为 $n$ ,考虑不同大小的子集的方案数以及贡献。 注意到 $\sum\limits_{i=0}^n\dbinom{n}{i}(-1)=(1-1)^n=[n=0] -
这个容斥系数引出了憨逼子集反演 :
若有
F(U)=\sum\limits_{S⊆U}f(S) ,即子集求和。f(S)=\sum\limits_{S⊆U}[S-U=\varnothing]f(S) =\sum\limits_{S⊆U}\sum\limits_{T\subseteq S-U}(-1)^{|T|}f(S) 注意到
T\subseteq S-U 类似于t|\frac{s}{u} ,那么交换和式之后就有=\sum\limits_{T\subseteq U}(-1)^{|T|}\sum\limits_{U⊆S-T}f(S) =\sum\limits_{T\subseteq U}(-1)^{|T|}F(S-T) 则导出
F(S)=\sum\limits_{T⊆S}f(T)\ \Longleftrightarrow\ f(S)=\sum\limits_{T⊆S}(-1)^{|S-T|}F(S) 其实就是子集卷积上
\mu 。类似地有
F(S)=\sum\limits_{S⊆T}f(T)\ \Longleftrightarrow\ f(S)=\sum\limits_{S⊆T}(-1)^{|T-S|}F(S)
考虑推广到多重集合,
\sum\limits_{S⊆U}\mu(S)=[U=\varnothing] 如何保持呢?注意到多重集合肯定不是空集,我们只需要简单地令含有重复的元素的集合贡献为
0 即可。那么有
\mu(S)=(-1)^{|S|}[S\text{中无重复元素}] 其实数论中的莫比乌斯函数就是这个原则的体现。
-
-
(3)$ 考虑到莫比乌斯反演中有 $F*I*\mu=F$ 即 $F(n)=\sum\limits_{d|n}\sum\limits_{t|d}\mu(\frac{d}{t})F(t) 类似地有
F(U)=\sum\limits_{S⊆U}\sum\limits_{P⊆S}\mu(|S-P|) 即f(P)=\sum\limits_{S⊆U}\sum\limits_{P⊆S}(-1)^{|S|-|P|}f(P) 和
(1) 配合用于拆交集。和莫反中拆\rm gcd 是一个道理。
仍然找不到题目,只有一道 : P5206 [WC2019] 数树
7.单位根反演
单位根反演小记