反演笔记

反演

反演

若已知 f(n)=g(k),用 f 表示 g 的过程就叫“反演”。

二项式反演

参考一下邓老师的 PPT。


经典题:n 个元素错排的方案数。要求线性。

考虑枚举有 k 个人非错排,可以得到这 k 个人一共有 (nk) 种选法,剩下的人有 (nk) 个,都是随便站。总方案就是 (nk)×(nk)! 但是显然会有重复。因此我们容斥,可以得到:

k=0n(1)k(nk)(nk)!

下面是重要的性质:

Important Lemma

k=0n(1)k(nk)=[n==0]

这个引理也很好理解:杨辉三角带符号行求和,由于其对称性显然为 0


我们考虑设 f(n) 表示 n 个人随便站的方案数,这个显然是很好求的。设 g(n) 表示 n 个人错排的方案数,我们上面已经求了。用 f(nk) 换掉 (nk)! 可以得到:

g(n)=k=0n(1)k(nk)f(nk)

我们不妨换一个角度考虑。我们用 g 表示 f。我们枚举有 k 个人错位了,可以得到:

f(n)=k=0n(nk)g(k)

  • 这两个式子有什么关系呢?首先显然有:

g(n)=m=0n[n=m](nm)g(m)

  • 回忆 Important Lemma,有

g(n)=m=0nk=0nm(1)k(nmk)(nm)g(m)

  • 我们注意到 (nmk)(nm)(nk)(nkm) 实际上是等价的,因为都等价于将一个集合划分成两个不交子集。所以有:

g(n)=m=0nk=0nm(1)k(nmk)(nm)g(m)=m=0nk=0nm(1)k(nk)(nkm)g(m)=k=0n(1)k(nk)m=0nk(nkm)g(m)

我们惊奇的发现,右面的一坨就等于 f(nk)​!

  • 把下标换的好看一点,就得到:

g(n)=k=0n(1)nk(nk)f(k)


二项式反演形式一

基于上面的推导,我们可以得到:

f(n)=k=0n(nk)g(k)g(n)=k=0n(1)nk(nk)f(k)

这就是二项式反演?


二项式反演形式二

f(n)=k=0n(1)k(nk)g(k)g(n)=k=0n(1)k(nk)f(k)

这个式子非常对称。下面证明一下:不妨设 h(n)=(1)ng(n)。那么有:

f(n)=k=0n(1)k(nk)h(k)

  • 根据形式一,可以得到:

h(n)=k=0n(1)nk(nk)f(k)(1)ng(n)=k=0n(1)nk(nk)f(k)

  • (1)k 除过去就可以得到:

g(n)=k=0n(1)k(nk)f(k)


二项式反演形式三

f(n)=k=n(kn)g(k)g(n)=k=n(1)kn(kn)f(k)


二项式反演形式四

f(n)=k=n(1)k(kn)g(k)g(n)=k=n(1)k(kn)f(k)

这两种形式大概不需要过多解释了。

例题

  1. P10596 集合选数

n 个集合,要选出子集集合 {Si},使得 |S1S2Sn|=k。求方案数。

  • 使用二项式反演的关键在于构造两个函数 f,g,并且使得 f 比较好求。

  • 不妨设 f(x) 表示钦定 x 个数必须选,剩下的随便选,选出子集的方案数。显然,我们要选出这 x 个数,剩下的数选或不选构成子集,子集选或不选再构成方案。所以 f(x)=(nx)(22nx1)

  • 不妨设 g(x) 表示选出子集交集大小为 x 的方案数。显然 g(k) 即为我们所求。我们寻求 f,g 之间的关系,可以得到:

f(x)=k=xn(kx)g(k)

根据二项式反演形式三,可以得到:

g(x)=k=xn(1)kx(kx)f(k)

这样可以做到线性。

Tip:在做二项式反演相关问题时,一般会”钦定“、”恰好选择“或”选择大于若干个“。

  1. P4491 染色

长度为 n 个序列,每个位置可以染 1m 的颜色。若出现次数为 s 的颜色种数为 k 则获得 wk 的代价。求所有染色方案的权值和。

按照套路,不妨设f(x)钦定x 中颜色必须选的方案数,g(x) 为出现次数为 s 的颜色种数恰好为 x 的方案数。首先不难得到:

f(x)=k=xm(kx)g(k)

根据二项式反演形式三不难得到:

g(x)=k=xm(1)kx(kx)f(k)

现在关键是 f 怎么求。首先要从 m 中颜色中选出钦定的那些,然后从 n 个位置选出一些把他们填上,然后再算上顺序,可以得到:

f(x)=(mx)(nsx)(s×x)!(s!)x(mj)nsx

posted @   Link-Cut-Y  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
点击右上角即可分享
微信分享提示