容斥原理
容斥原理
\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i<j\le n}|A_i\cap A_j|+...+(-1)^{n-1}\times |A_1\cap A_2\cap ...\cap A_n|\)
二项式反演
形式1
\(f_i=\sum_{j=k}^n C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^{i-j}*C(i,j)*f_j\)
形式2
\(f_i=\sum_{j=k}^n (-1)^j*C(i,j)*g_j \Leftrightarrow g_i=\sum_{j=k}^n (-1)^j*C(i,j)*f_j\)
证明1
\(|A_1\cup A_2\cup...\cup A_n|=\sum\limits_{1\le i\le n}|A_i|-\sum\limits_{1\le i<j\le n}|A_i\cap A_j|+...+(-1)^{n-1}\times |A_1\cap A_2\cap ...\cap A_n|\)
\(\Rightarrow |\complement A_1\cap \complement A_2\cap...\cap \complement A_n|=|S|-\sum\limits_{1\le i\le n}|A_i|+\sum\limits_{1\le i<j\le n}|A_i\cap A_j|-...-(-1)^{n-1}\times |A_1\cap A_2\cap ...\cap A_n|\)
\(\Rightarrow |A_1\cap A_2\cap...\cap A_n|=|S|-\sum\limits_{1\le i\le n}|\complement A_i|+\sum\limits_{1\le i<j\le n}|\complement A_i\cap \complement A_j|-...-(-1)^{n-1}\times |\complement A_1\cap \complement A_2\cap ...\cap \complement A_n|\)
假设现在交集的大小仅是关于集合个数的函数,
设\(f_n\)表示\(|A_1\cap A_2\cap...\cap A_n|\),\(g_n\)表示\(|\complement A_1\cap
\complement A_2\cap...\cap \complement A_n|\),且\(f(0)=g(0)=|S|\),则
\(f_i=\sum_{j=0}^i (-1)^j*C(i,j)*g_j\)
\(g_i=\sum_{j=0}^i (-1)^j*C(i,j)*f_j\)
形式2得证,证明形式1只需代换即可.
对于\(\sum_{j=k}^i\)的情况,请看证明2.
证明2
对于形式1,把\(f_i\)代入右侧式子得
\(g_i=\sum_{j=k}^i (-1)^{i-j}*C(i,j)*\sum_{l=k}^j C(j,l)*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*C(i,j)*C(j,l)*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{i!}{j!(i-j)!}*\frac{j!}{l!(j-l)!}*g_l\)
\(=\sum_{l=k}^i \sum_{j=l}^i (-1)^{i-j}*\frac{(i-l)!}{(i-j)!(j-l)!}*\frac{i!}{(i-l)!l!}*g_l\)
\(=\sum_{l=k}^i C(i,l)*g_l*\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)\)
当\(i\neq l\)时,由二项式定理,得\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=(1-1)^{i-l}=0\)
当\(i=l\)时,\(\sum_{j=l}^i (-1)^{i-j}*C(i-l,j-l)=1\)
\(\therefore g_i=[i=l]*C(i,l)*g_l=g_i\),得证.
习题
A. HDU 4135
求 \([A,B]\) 中有多少个数与 \(N\) 互质。 \(A,B\le 10^{15},N\le 10^9\)
解
\(O(\sqrt n)\) 找出 \(n\) 的所有质因子,然后指数级容斥。可以证明质因子个数不会超过15个。
B. HDU 4059
\(T\le 1000\) 组询问,给定 \(n\) ,求与 \(n\) 互质的数的四次方和。
解
\(O(\sqrt n)\) 找出 \(n\) 的所有质因子,然后指数级容斥。可以证明质因子个数不会超过6个。
C. HDU 5201
有 \(n\) 件物品, \(m\) 个人,现在要把物品分给人,要求没有一个人拿到的物品数大于等于第一个人拿到的物品数。求方案数。多组数据。 \(T\le 25,n,m\le 10^5\)
解
先枚举第一个人拿到的物品数 \(i\)。
然后就要求把 \(n-i\) 个物品分给 \(m-1\) 个人且每个人不能超过 \(i\) 的方案数。