「总结」容斥。二.反演原理 5.划分容斥

Posted lrefrain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「总结」容斥。二.反演原理 5.划分容斥相关的知识,希望对你有一定的参考价值。

参考的$blogs$这篇

还有具体数学。

是斯特林反演了。

首先必要的是两类斯特林数。

在定义上很重要的区别就是第一类是划分排列,而第二类是划分组合。

性质上比较重要的就是第一类是将升降幂转化为通常幂,第二类则反之。

 f(n)=k=0n{nk}g(k)?g(n)=k=0n(1)nk[nk]f(k)

$fr.$第一类斯特林数。

$$left[egin{array}{c}n\\kend{array} ight]$$

$n$个元素划分为$k$个集合,每个集合内圆排列的方案数。

根据定义,枚举第$n$个元素是处于一个新的集合,还是处于之前某个集合中的某个元素的右侧,可以得到递推式:

$$left[egin{array}{c}n\\kend{array} ight]=left[egin{array}{c}n-1\\k-1end{array} ight]+(n-1)left[egin{array}{c}n-1\\kend{array} ight]$$

 

性质1:

说过了第一类斯特林数是划分排列。

$$sumlimits_{i=0}^{n}left[egin{array}{c}n\\iend{array} ight]=n!$$

证明:排列唯一定义一个轮换,轮换唯一定义一个排列。

 

性质上比较重要的就是第一类是将升降幂转化为通常幂,第二类则反之。

性质2:

$$x^{underline{n}}=sumlimits_{i=0}^{n}(-1)^{n-i}left[egin{array}{c}n\\iend{array} ight]x^i$$

归纳证明:

$$egin{array}{rcl} \\ x^{underline{n+1}}&=&(x-n)x^{underline{n}}\\&=&xsumlimits_{i=0}^{n}egin{bmatrix}n\\i end{bmatrix}(-1)^{n-i}x^{i}-nsumlimits_{i=0}^{n}egin{bmatrix}n\\i end{bmatrix}(-1)^{n-i}x^{i}\\&=&sumlimits_{i=0}^{n}egin{bmatrix}n\\i end{bmatrix}(-1)^{n-i}x^{i+1}+nsumlimits_{i=1}^{n+1}egin{bmatrix}n\\i end{bmatrix}(-1)^{n-i+1}x^{i}\\&=&sumlimits_{i=1}^{n+1}egin{bmatrix}n\\i-1 end{bmatrix}(-1)^{n-i+1}x^{i}+nsumlimits_{i=1}^{n+1}egin{bmatrix}n\\i end{bmatrix}(-1)^{n-i+1}x^{i}\\&=&sumlimits_{i=1}^{n+1}left(egin{bmatrix}n\\i-1 end{bmatrix}+negin{bmatrix}n\\i end{bmatrix} ight)(-1)^{n-i+1}x^i\\&=&sumlimits_{i=1}^{n+1}egin{bmatrix}n+1\\i end{bmatrix}(-1)^{n+1-i}x^i\\&=&x^{underline{n+1}}\\ end{array}$$

 

性质3:

$$x^{overline{n}}=sumlimits_{i=0}^{n}egin{bmatrix}n\\iend{bmatrix}x^i$$

归纳证明:
$$egin{array}{rcl}\\x^{overline{n+1}}&=&(x+n)x^{overline{n}}\\&=&(x+n)sumlimits_{i=0}^{n}egin{bmatrix}n\\iend{bmatrix}x^i\\&=&sumlimits_{i=1}^{n+1}egin{bmatrix}n\\i-1 end{bmatrix}x^i+nsumlimits_{i=1}^{n+1}egin{bmatrix}n\\iend{bmatrix}x^i\\&=&sumlimits_{i=1}^{n+1}left(egin{bmatrix}n\\i-1end{bmatrix}+negin{bmatrix}n\\iend{bmatrix} ight)x^i\\&=&sumlimits_{i=1}^{n+1}egin{bmatrix}n+1\\iend{bmatrix}x^i\\&=&x^{overline{n+1}} end{array}$$

 

求第一类斯特林数:

利用性质3:

设母函数$f(x)^n=x^{underline{n}}=sumlimits_{i=0}^{n}a_ix^i$

那么求出的$a_i$其实就是一行的第一类斯特林数,考虑倍增$FFT$

$$f(x)^{2n}=f(x)^f(x+n)^n$$

当我们得到$f(x)^n$的时候考虑如何求出$f(x+n)^n

$$egin{array}{rcl}f(x+n)^n&=&sumlimits_{i=0}^{n}a_i(x+n)^i\\&=&sumlimits_{i=0}^{n}a_isumlimits_{j=0}^{i}inom{i}{j}x^j n^{i-j}\\&=&sumlimits_{i=0}^{n}x^isumlimits_{j=i}{n}inom{j}{i}a_jn^{j-i}\\&=&sumlimits_{i=0}^{n}x^i i!sumlimits_{j=i}{n}frac{j!}{(j-i)!}n^{j-i}a_jend{array}$$

后面是个卷积,直接$NTT$就完事。

倍增求解复杂度仍然为$O(nlogn)$

 

$se.$第二类斯特林数。

$$egin{Bmatrix}n\\kend{Bmatrix}$$

$n$个元素划分为$k$个集合的方案数。

根据定义,枚举第$n$个元素所在的集合,可以得到递推式:

$$egin{Bmatrix}n\\kend{Bmatrix}=egin{Bmatrix}n-1\\k-1end{Bmatrix}+kegin{Bmatrix}n-1\\kend{Bmatrix}$$

 

性质1:

$$k^n=sumlimits_{i=0}^{k}egin{Bmatrix}n\\iend{Bmatrix}i!inom{k}{i}=sumlimits_{i=0}^{k}egin{Bmatrix}n\\iend{Bmatrix}k^{underline{i}}$$

我们在$k$个集合中选择$i$个集合放入元素,然后全排列这些集合,得到的就是$n$个元素放入$k$个可空集合的方案数。

 

性质2:

说过了第二类斯特林数是划分组合。

考虑用组合数来表示斯特林数。

利用容斥原理即可,我们枚举$k$个集合中至少空的集合,并且将之除去排列,得到:

$$egin{Bmatrix}n\\kend{Bmatrix}=frac{1}{k!}sumlimits_{i=0}^{k}(-1)^iinom{k}{i}(k-i)^n$$

是奇加偶减。

 

求第二类斯特林数:

利用性质2。

展开:

$$egin{array}{rcl} egin{Bmatrix}n\\kend{Bmatrix}&=&sumlimits_{i=0}^{k}(-1)^ifrac{1}{k!}frac{k!}{i!(k-i)!}(k-i)^n\\&=&sumlimits_{i=0}^{k}(-1)^ifrac{1}{i!}frac{(k-i)^n}{(k-i)!}end{array}$$

是卷积的形式,那么可以在$O(nlogn)$的复杂度内求出第$n$行斯特林数。

 

$th.$斯特林反演。

首先给出结论:

$$f(n)=sumlimits_{i=0}^{n}egin{Bmatrix}n\\iend{Bmatrix}g(i) -> g(n)=sumlimits_{i=0}^{n}egin{bmatrix}n\\iend{bmatrix}(-1)^{n-i}f(i)$$

两个引理:

$$x^{underline{n}}=(-1)^n(-x)^{overline{n}}$$

$$x^{overline{n}}=(-1)^n(-x)^{underline{n}}$$

只证明第一个:

证明:

$$egin{array}{rcl}x^{underline{n}}&=&(-1)^nprodlimits_{i=0}^{n-1}(-(x-i))\\&=&(-1)^n(-1)^nprodlimits_{i=0}^{n-1}(x-i)\\&=&x^{underline{n}}end{array}$$

两个反转公式:

$$sumlimits_{i=m}^{n}egin{bmatrix}n\\iend{bmatrix}egin{Bmatrix}i\\mend{Bmatrix}=[m=n]$$

$$sumlimits_{i=m}^{n}egin{Bmatrix}n\\iend{Bmatrix}egin{bmatrix}i\\mend{bmatrix}=[m=n]$$

反转一证明:

由第一类斯特林数性质2和第二类斯特林数性质1得到:

$$egin{array}{rcl}x^{underline{n}}&=&sumlimits_{i=0}^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}x^i\\&=&sumlimits_{i=0}^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}sumlimits_{j=0}^{i}egin{Bmatrix}i\\jend{Bmatrix}x^{underline{j}} end{array}$$

更换枚举顺序得到:

$$=sumlimits_{i=0}^{n}x^{underline{i}}sumlimits_{j=i}^{n}(-1)^{n-j}egin{bmatrix}n\\iend{bmatrix}egin{Bmatrix}j\\iend{Bmatrix}$$

设$f(n,m)=sumlimits_{i=m}^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}egin{Bmatrix}i\\mend{Bmatrix}$

那么:

$$egin{array}{rcl}&=&sumlimits_{i=0}^{n}x^{underline{i}}f(n,i)\\&=&x^{underline{n}}\\&=&sumlimits_{i=0}^{n}x^{underline{i}}[n=i]end{array}$$

所以:

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$$f(n,m)=[n=m]$$

$f$和反转公式一是相等的,得证。

 

然后反转二证明:

$$x^n=sumlimits_{i=0}^{n}egin{Bmatrix}n\\iend{Bmatrix}(-1)^{i}x^{underline{i}}$$

利用引理二:

$$egin{array}{rcl}&=&sumlimits_{i=0}^{n}egin{Bmatrix}n\\iend{Bmatrix}(-1)^isumlimits_{j=0}^{i}egin{bmatrix}i\\jend{bmatrix}(-1)^j(x)^j\\&=&sumlimits_{i=0}^{n}x^jsumlimits_{j=i}^{n}(-1)^{j-i}egin{Bmatrix}n\\jend{Bmatrix}egin{bmatrix}j\\iend{bmatrix}end{array}$$

 

斯特林反演证明:

假设:

 

$$g(n)=sumlimits_{i=0}^{n}(-1)^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}$$

$$egin{array}{rcl}f(n)&=&sumlimits_{i=0}^{n}[n=i]f(i)\\&=&sumlimits_{i=0}^{n}sumlimits_{j=i}^{n}(-1)^{n-j}egin{Bmatrix}n\\jend{Bmatrix}egin{bmatrix}j\\iend{bmatrix}f(i)\\&=&sumlimits_{i=0}^{n}egin{Bmatrix}n\\iend{Bmatrix}sumlimits_{j=0}^{i}egin{bmatrix}i\\jend{bmatrix}f(i)\\&=&sumlimits_{i=0}^{n}egin{Bmatrix}n\\iend{Bmatrix}g(i) end{array}$$

 

另一种至少形式:

$$f(m)=sumlimits_{i=m}^{n}egin{Bmatrix}i\\mend{Bmatrix}g(i) -> g(m)=sumlimits_{i=m}^{n}egin{bmatrix}i\\mend{bmatrix}(-1)^{i-m}g(i)$$

 

$fo.$相互再归的鹅妈妈。

与其说是斯特林反演不如说是系数构造容斥了。

根据某个斯特林数的性质设计容斥:

$$x^{underline{n}}=sumlimits_{i=0}^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}x^i$$

将$x=1$带入。

$$sumlimits_{i=0}^{n}(-1)^{n-i}egin{bmatrix}n\\iend{bmatrix}=1^{underline{n}}=[n=1]$$

因为下降幂再乘就乘到0了。

设集合$S$有$n$个元素,$S$的一种集合划分为$m$,记作$min S$,$m$中的集合个数称做$k$,每个集合的大小称作$a_i$。

考虑第一类斯特林数的意义,其实就是枚举每一种划分,然后将划分中的每个集合排序。

那么:

$$[n=1]=sumlimits_{min S}(-1)^{n-k}prod{i=1}^{k}(a_i-1)!=sumlimits_{min S}prod{i=1}^{k}(a_i-1)!(-1)^{a_i-1}$$

这就是题解写的那个式子了,俩月之前还理解不了呢。

假设我们已经求出可以重复的方案数。

我们把$n$集合划分,要求相同的数在同一集合,不同的在不同集合。

对于一个划分方案,我们发现它要满足的条件是:

$$prodlimits_{i=1}^{k}[a_i=1]$$

也就是各不相同。

设一个容斥系数$f(m)$,总的被计算的方案就是:

$$sumlimits_{min S}f(m)prodlimits_{i=1}^{k}egin{bmatrix}a_i\\1end{bmatrix}$$

要求每个被计算的方案都满足:

$$prodlimits_{i=1}^{k}[a_i=1]$$

那么:

$$f(m)=(-1)^{n-k}$$

设$dp[i]$为$i$个人可重复的方案数。

$$ans=sumlimits_{min S}dp[k](-1)^{n-k}prodlimits_{i=1}^{k}egin{bmatrix}a_i\\1end{bmatrix}=sumlimits_{min S}dp[k]prodlimits_{i=1}^{k}(a_i-1)!(-1)^{a_i-1}$$

现在考虑求$dp$数组。

首先考虑有序方案,最后除去$n!$即可。

枚举究竟在哪一位某个人开始与$R$不相同,这样得到了的人后面可以乱填,同时只需要留一个人来调和其他不为0的位置即可。

数位$dp$。

好久以前的题啊,终于还是解决掉了。

以上是关于「总结」容斥。二.反演原理 5.划分容斥的主要内容,如果未能解决你的问题,请参考以下文章

「总结」容斥。三.广义容斥

组合数学,容斥原理与反演

「总结」容斥原理

BZOJ 2440: [中山市选2011]完全平方数 二分答案 + 容斥原理 + 莫比乌斯反演

容斥原理/莫比乌斯反演破译密码

容斥原理/莫比乌斯反演破译密码