二项式反演
-
用途:
我们往往会遇到一类问题,要计算从 n 个中恰好选 k 个时的答案。这有时候会十分困难,因此我们先计算从 n 个中钦定 k 个选择(剩下 n−k 个可选可不选)时的答案 F(k)(这往往很简单),然后二项式反演求出恰好选 k 个的答案 G(k)
-
几个常见公式
设 F k 表示恰好 k 个的方案数 , G k 表示至少 k 个的方案数 , 则 G k = ∑ i = k n ( i k ) F i ⟺ F k = ∑ i = k n ( − 1 ) i − k ( i k ) G i 设F_k表示恰好k个的方案数, G_k表示至少k个的方案数, 则G_k=\sum_{i=k}^{n}\dbinom{i}{k}F_i\iff F_k=\sum_{i=k}^{n}(-1)^{i-k}\dbinom{i}{k}G_i 设Fk表示恰好k个的方案数,Gk表示至少k个的方案数,则Gk=i=k∑n(ki)Fi⟺Fk=i=k∑n(−1)i−k(ki)Gi设 F k 表示恰好 k 个的方案数 , G k 表示至多 k 个的方案数 , 则 G k = ∑ i = 0 k ( k i ) ⟺ F k = ∑ i = 0 k ( − 1 ) k − i ( k i ) G i 设F_k表示恰好k个的方案数, G_k表示至多k个的方案数, 则G_k=\sum_{i=0}^{k}\dbinom{k}{i} \iff F_k=\sum_{i=0}^{k}(-1)^{k-i}\dbinom{k}{i}G_i 设Fk表示恰好k个的方案数,Gk表示至多k个的方案数,则Gk=i=0∑k(ik)⟺Fk=i=0∑k(−1)k−i(ik)Gi
-
子集反演
设f(S)表示恰好是集合S的答案数量,g(S)表示是S的子集的答案的数量
于是有
g ( S ) = ∑ T ⊆ S f ( T ) ⟺ f ( S ) = ∑ T ⊆ S ( − 1 ) ∣ S ∣ − ∣ T ∣ g ( T ) g(S)=\sum_{T\subseteq S}f(T) \iff f(S)=\sum_{T\subseteq S}(-1)^{|S|-|T|}g(T) g(S)=T⊆S∑f(T)⟺f(S)=T⊆S∑(−1)∣S∣−∣T∣g(T) -
Min-Max 容斥
-
高维二项式反演