序列反演的一些技巧和感悟

I.Preface

一般来说,我们称以下这种关系叫做反演:

\[A_x=\sum_{i=0}^{+\infty}k(i,x)\cdot B_i \Leftrightarrow B_x=\sum_{i=0}^{+\infty}\mu(i,x)\cdot A_o \]

常见的反演有二项式反演、莫比乌斯反演、子集反演、斯特林反演、单位根反演、拉格朗日反演等等。

为什么需要反演?

有了反演,在很多计数问题中可以有声东击西、围魏救赵、甚至指鹿为马、曲径通幽的效果。我们可以求出其它的一个在我们能力范围内的量,然后把我们要的东西通过反演求出来。这时反演的价值所在。

II.常见反演

1.二项式反演

\[A_n=\sum_{i=0}^n (-1)^i\cdot \begin{pmatrix} n \\ i \end{pmatrix}\cdot B_i \Leftrightarrow B_n=\sum_{i=0}^x(-1)^i\cdot \begin{pmatrix} n \\ i \end{pmatrix}\cdot A_i \]

\[A_n=\sum_{i=0}^n \begin{pmatrix} n \\ i \end{pmatrix}\cdot B_i \Leftrightarrow B_n=\sum_{i=0}^n(-1)^{n-i}\cdot \begin{pmatrix} n \\ i \end{pmatrix}\cdot A_i \]

\[A_n=\sum_{i=n}^{+\infty} (-1)^i\cdot \begin{pmatrix} i \\ n \end{pmatrix}\cdot B_i \Leftrightarrow B_n=\sum_{i=n}^{+\infty}(-1)^i\cdot \begin{pmatrix} i \\ n \end{pmatrix}\cdot A_i \]

\[A_n=\sum_{i=n}^{+\infty} \begin{pmatrix} i \\ n \end{pmatrix}\cdot B_i \Leftrightarrow B_n=\sum_{i=n}^{+\infty}(-1)^{i-n}\cdot \begin{pmatrix} i \\ n \end{pmatrix}\cdot A_i \]

其中最下面这个式子最重要!二维形式:

\[A_{n,m}=\sum_{i=n}\sum_{j=m} \begin{pmatrix} i \\ n \end{pmatrix}\cdot \begin{pmatrix} j \\ m \end{pmatrix}\cdot B_{i,j} \Leftrightarrow B_{n,m}=\sum_{i=n}\sum_{j=m}(-1)^{i+j}\begin{pmatrix} i \\ n \end{pmatrix}\cdot \begin{pmatrix} j \\ m \end{pmatrix}\cdot A_{i,j} \]

二维形式的其它写法也是将一维形式的系数直接相乘以可,证明可以用两次一维形式的反演得到。

2. 莫比乌斯反演

\[f(n)=\sum_{d\mid n}g(d) \Leftrightarrow g(n)=\sum_{d\mid n}\mu(d)f(\frac{n}{d}) \]

\[f(n)=\sum_{n|d}g(d) \Leftrightarrow g(n)=\sum_{n|d}\mu(\frac{d}{n})f(d) \]

3. 斯特林反演

我懒得打了,反正用的少......待补充吧!

III.Usage

纸上谈兵无用,下面直入主题,如何用呢?先说什么时候用吧!题目中有"恰好"字眼的

比如说 [HAOI2018]染色 中的这段话:

然而小 C 只关心序列的 \(N\) 个位置中出现次数恰好为 \(S\) 的颜色种数, 如果恰好出现了 \(S\) 次的颜色有 \(K\) 种, 则小 C 会产生 \(W_k\) 的愉悦度.

再比如 [MtOI2018]情侣?给我烧了!

你的任务是求出当 \(k = 0, 1, ... , n\) 时,共有多少种不同的就坐方案满足恰好\(k\) 对情侣是和睦的。

这时可以先旁敲侧击地求出一些量,然后峰回路转用反演定理把我们要求地量求回来。

一般来说这种题目求的那个量往往是"指定有 \(k\) 个的满足条件",这时和"恰好有 \(k\) 个"刚刚好可以用二项式反演。如染色这题中,设 \(G_k\) 为指定了 \(k\) 中颜色,其他任意的方案;\(F_k\) 为恰好 \(k\) 中颜色的方案,于是有:

\[G_k=\begin{pmatrix} m \\ S \end{pmatrix} \cdot \frac{n!}{(S!)^k\cdot(2n-2k)!}\cdot (m-k)^{n-kS}=\sum_{i=k}^{\min(\frac{n}{S},m)} \begin{pmatrix} i \\ k \end{pmatrix}\cdot F_i \]

然后使用二项式反演,并使用 ntt 加速,就可以 \(O(n\log n)\) 完成这道题了。

还有就是用来解决 \(\sum [gcd(i,j)=C]\) 一类问题,详情可以看我的另一篇博客 SP20173 DIVCNT2 - Counting Divisors (square)

posted @ 2021-02-14 23:10  Linshey  阅读(271)  评论(0编辑  收藏  举报