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