总结一下见到的各种二项式反演的套路。
总的来说,二项式反演就是容斥。
只不过这个容斥有固定的套路,形式就那么几种,我把它们且分为两种形式:
1.直接不好算,但是至多好算。
2.直接不好算,但是至少好算。
至多好算:
设 f ( i ) f(i) f(i)表示恰好有 i i i个的方案数, g ( i ) g(i) g(i)表示至多有 i i i个的方案数。
f
f
f和
g
g
g满足:
g
(
i
)
=
∑
x
=
0
i
(
i
x
)
∗
f
(
x
)
(
1
)
g(i)=\sum_{x=0}^i \binom{i}{x}*f(x)~~(1)
g(i)=∑x=0i(xi)∗f(x) (1)
则:
f
(
i
)
=
∑
x
=
0
i
(
−
1
)
i
−
x
∗
(
i
x
)
∗
g
(
x
)
(
2
)
f(i)=\sum_{x=0}^i (-1)^{i-x}*\binom{i}{x}*g(x)~~(2)
f(i)=∑x=0i(−1)i−x∗(xi)∗g(x) (2)
证明:
把
(
1
)
(1)
(1)式代入
(
2
)
(2)
(2)式,得:
f
(
i
)
=
∑
x
=
0
i
(
−
1
)
i
−
x
∗
(
i
x
)
∗
∑
j
=
0
x
(
x
j
)
∗
f
(
j
)
f(i)=\sum_{x=0}^i (-1)^{i-x}*\binom{i}{x}*\sum_{j=0}^x \binom{x}{j}*f(j)
f(i)=∑x=0i(−1)i−x∗(xi)∗∑j=0x(jx)∗f(j)
=
∑
j
=
0
i
f
(
j
)
∗
∑
x
=
j
i
(
−
1
)
i
−
x
∗
(
i
x
)
∗
(
x
j
)
=\sum_{j=0}^i f(j)*\sum_{x=j}^i (-1)^{i-x}*\binom{i}{x}*\binom{x}{j}
=∑j=0if(j)∗∑x=ji(−1)i−x∗(xi)∗(jx)
=
∑
j
=
0
i
f
(
j
)
∗
∑
x
=
0
i
−
j
(
−
1
)
i
−
(
x
+
j
)
∗
(
i
x
+
j
)
∗
(
x
+
j
j
)
=\sum_{j=0}^i f(j)*\sum_{x=0}^{i-j} (-1)^{i-(x+j)}*\binom{i}{x+j}*\binom{x+j}{j}
=∑j=0if(j)∗∑x=0i−j(−1)i−(x+j)∗(x+ji)∗(jx+j)
=
∑
j
=
0
i
f
(
j
)
∗
∑
x
=
0
i
−
j
(
−
1
)
i
−
j
−
x
∗
(
i
j
)
∗
(
i
−
j
x
)
=\sum_{j=0}^i f(j)*\sum_{x=0}^{i-j} (-1)^{i-j-x}*\binom{i}{j}*\binom{i-j}{x}
=∑j=0if(j)∗∑x=0i−j(−1)i−j−x∗(ji)∗(xi−j)
=
∑
j
=
0
i
f
(
j
)
∗
(
i
j
)
∗
[
(
i
−
j
)
=
0
]
=\sum_{j=0}^i f(j)*\binom{i}{j}*[(i-j)=0]
=∑j=0if(j)∗(ji)∗[(i−j)=0]
=
f
(
i
)
=f(i)
=f(i)
例题:
错排问题
至少好算:
设 f ( i ) f(i) f(i)表示恰好有 i i i个的方案数, g ( i ) g(i) g(i)表示至少有 i i i个的方案数。
g
(
i
)
=
∑
x
=
i
n
(
x
i
)
∗
f
(
x
)
(
3
)
g(i)=\sum_{x=i}^n \binom{x}{i}*f(x)~(3)
g(i)=∑x=in(ix)∗f(x) (3)
f
(
i
)
=
∑
x
=
i
n
(
−
1
)
x
−
i
∗
(
x
i
)
∗
g
(
x
)
(
4
)
f(i)=\sum_{x=i}^n (-1)^{x-i}*\binom{x}{i}*g(x)~(4)
f(i)=∑x=in(−1)x−i∗(ix)∗g(x) (4)
证明:
把
(
3
)
(3)
(3)代入
(
4
)
(4)
(4)
f
(
i
)
=
∑
x
=
i
n
(
−
1
)
x
−
i
(
x
i
)
∗
∑
j
=
x
n
(
j
x
)
f
(
j
)
f(i)=\sum_{x=i}^n(-1)^{x-i}\binom{x}{i}*\sum_{j=x}^n\binom{j}{x}f(j)
f(i)=∑x=in(−1)x−i(ix)∗∑j=xn(xj)f(j)
=
∑
j
=
i
n
f
(
j
)
∗
∑
x
=
i
j
(
j
x
)
∗
(
x
i
)
∗
(
−
1
)
x
−
i
=\sum_{j=i}^n f(j)*\sum_{x=i}^j\binom{j}{x}*\binom{x}{i}*(-1)^{x-i}
=∑j=inf(j)∗∑x=ij(xj)∗(ix)∗(−1)x−i
=
∑
j
=
i
n
f
(
j
)
∗
∑
x
=
0
j
−
i
(
j
x
+
i
)
∗
(
x
+
i
i
)
∗
(
−
1
)
x
=\sum_{j=i}^n f(j)*\sum_{x=0}^{j-i}\binom{j}{x+i}*\binom{x+i}{i}*(-1)^{x}
=∑j=inf(j)∗∑x=0j−i(x+ij)∗(ix+i)∗(−1)x
=
∑
j
=
i
n
f
(
j
)
∗
∑
x
=
0
j
−
i
(
j
i
)
∗
(
j
−
i
x
)
∗
(
−
1
)
x
=\sum_{j=i}^n f(j)*\sum_{x=0}^{j-i}\binom{j}{i}*\binom{j-i}{x}*(-1)^{x}
=∑j=inf(j)∗∑x=0j−i(ij)∗(xj−i)∗(−1)x
=
∑
j
=
i
n
f
(
j
)
∗
(
j
−
i
x
)
∗
∑
x
=
0
j
−
i
(
j
i
)
∗
(
−
1
)
x
=\sum_{j=i}^n f(j)*\binom{j-i}{x}*\sum_{x=0}^{j-i}\binom{j}{i}*(-1)^{x}
=∑j=inf(j)∗(xj−i)∗∑x=0j−i(ij)∗(−1)x
=
∑
j
=
i
n
f
(
j
)
∗
(
j
−
i
x
)
∗
[
(
j
−
i
)
=
0
]
=\sum_{j=i}^n f(j)*\binom{j-i}{x}*[(j-i)=0]
=∑j=inf(j)∗(xj−i)∗[(j−i)=0]
=
f
(
i
)
=f(i)
=f(i)