博主的 BiBi 时间
这应该是本蒟蒻的第一篇学习笔记吧。
定义与结论
FMT
定义
f ( S ) = ∑ S ′ ∈ S g ( S ′ ) f(S)=\sum_{S'\in S}g(S') f(S)=S′∈S∑g(S′)
FMI
则有
g
(
S
)
=
∑
S
′
∈
S
(
−
1
)
∣
S
∣
−
∣
S
′
∣
∗
f
(
S
′
)
g(S)=\sum_{S'\in S}(-1)^{|S|-|S'|}*f(S')
g(S)=S′∈S∑(−1)∣S∣−∣S′∣∗f(S′)
证明
不妨设集合 x , y , z x,y,z x,y,z, x , y , z x,y,z x,y,z 集合各自大小为 a , b , c a,b,c a,b,c(这里的集合大小是二进制下一的个数)。
我们知道,若将后面的结论带入前面的式子之后等式成立,那么这个结论是正确的。
则
∑ y ∈ x g ( y ) = ∑ y ∈ x ∑ z ∈ y ( − 1 ) b − c ∗ f ( z ) \sum_{y\in x} g(y)=\sum_{y\in x} \sum_{z\in y} (-1)^{b-c}*f(z) y∈x∑g(y)=y∈x∑z∈y∑(−1)b−c∗f(z)
仔细观察这个式子,我们发现 x x x 是固定的,我们转而考虑每一个 z z z 的情况(因为后面式子只和 y y y 的大小有关)。
对于每个 z z z,应该有 C ( a − c , b − c ) C(a-c,b-c) C(a−c,b−c) 种方案( b b b 就是枚举 y y y 的大小, C ( a − c , b − c ) C(a-c,b-c) C(a−c,b−c) 就是 b b b 大小的 y y y 的可能情况)。
令(这个设置其实是为了防止后文误解)
t = ∑ y ∈ x g ( y ) t=\sum_{y\in x} g(y) t=y∈x∑g(y)
那么就有:
t = ∑ z ∈ x f ( z ) ∗ ∑ b = c a C ( a − c , b − c ) ∗ ( − 1 ) b − c t=\sum_{z\in x} f(z)*\sum_{b=c}^{a}C(a-c,b-c)*(-1)^{b-c} t=z∈x∑f(z)∗b=c∑aC(a−c,b−c)∗(−1)b−c
式子可以改写为:
t = ∑ z ∈ x f ( z ) ∗ ∑ b = c a C ( a − c , b − c ) ∗ ( − 1 ) b − c ∗ 1 a − b t=\sum_{z\in x} f(z)*\sum_{b=c}^{a}C(a-c,b-c)*(-1)^{b-c}*1^{a-b} t=z∈x∑f(z)∗b=c∑aC(a−c,b−c)∗(−1)b−c∗1a−b
由二项式定理得:
t = ∑ z ∈ x f ( z ) ∗ 0 a − c t=\sum_{z\in x} f(z)*0^{a-c} t=z∈x∑f(z)∗0a−c
显然只有当 a = c a=c a=c 时才会取到 f ( z ) f(z) f(z) 的值,又因为 z ∈ x z\in x z∈x,所以此时 x = z x=z x=z,那么得出 t = f ( x ) t=f(x) t=f(x)。
所以结论成立。
另外记录一个有趣的小证明(这个证不了全部)。其实结论就是当 a − c a-c a−c 为奇数时,后面那一坨 f ( z ) f(z) f(z) 的系数为 0 0 0。
首先有 C ( a − c , b − c ) = C ( a − c , a − c − ( b − c ) ) = C ( a − c , a − b ) C(a-c,b-c)=C(a-c,a-c-(b-c))=C(a-c,a-b) C(a−c,b−c)=C(a−c,a−c−(b−c))=C(a−c,a−b)。
你可以把
b
b
b 看作在区间
[
c
,
a
]
[c,a]
[c,a] 中游走的点,当
d
(
a
,
b
)
=
d
(
b
,
c
)
d(a,b)=d(b,c)
d(a,b)=d(b,c) 时,
C
C
C 值相等(这不是废话)。然而此时
−
1
-1
−1 的指数的奇偶性明显不同。(实在不行可以看图)
c b b' a
1 2 3 4 5 6
代码实现
相信自己,我先咕为敬