容斥专题
容斥
要用的式子
- 二项卷积
\[形式 c_n = \sum_i\binom{n}{i}a_ib_{n-i}
\]
- 组合恒等式
\[\binom{n}{k} = \binom{n}{n-k} (n\geq0) 对称恒等式\\
k\binom{n}{k} = n\binom{n-1}{k-1} 吸收恒等式\\
\binom{n}{m}\binom{m}{k} = \binom{n}{k}\binom{n-k}{m-k} 不知名东东\\
\sum_k\binom{r}{m+k}\binom{s}{n-k} = \binom{r+s}{n+m} 范德蒙德卷积\\
\sum_{i=n}^{m} \binom{i}{n} = \binom{m+1}{n+1}
\]
- 子集反演
\[若 f(S) = \sum_{T \subseteq S} g(T) \\
则 g(S) = \sum_{T \subseteq S} (-1)^{|S|-|T|}f(T) \\
若 f(S) = \sum_{S \subseteq T} g(T) \\
则 g(S) = \sum_{S \subseteq T} (-1)^{|T|-|S|}f(T) \\
\]
- \(\texttt{min-max}\) 容斥
\[\max(S) = \sum_{T \subseteq S} (-1)^{|T|-1} \min(T)\\
\min(S) = \sum_{T \subseteq S} (-1)^{|T|-1} \max(T)
\texttt{nb}形式\\
lcm(S) = \prod_{T \subseteq S} gcd(T)^{(-1)^{|T| - 1}}
\]
- 扩展 \(\texttt{min-max}\) 容斥
\[\max_k(S) = \sum_{T \subseteq S} (-1)^{|T|-k} \binom{|T| - 1}{k - 1} \min_k(T)\\
\min_k(S) = \sum_{T \subseteq S} (-1)^{|T|-k} \binom{|T| - 1}{k - 1} \max_k(T)\\
同时上述两个\texttt{min-max}容斥在期望下也成立
\]
- \(\texttt{FWT}\)
\[用于解决 c_k = \sum_{i|j=k}a_ib_j 的问题 \\
设 A0 为 A 的下标为偶数位构成的序列, A1 为 A 的下标为奇数位构成的序列 \\
则有 \texttt{FWT}(A) = (\texttt{FWT}(A0) + \texttt{FWT}(A1), \texttt{FWT}(A0) - \texttt{FWT}(A1)) \\
\texttt{IFWT}(A) = (\dfrac{\texttt{IFWT}(A0) + \texttt{IFWT}(A1)}{2}, \dfrac{\texttt{IFWT}(A0) - \texttt{IFWT}(A1)}{2}) \\
\]
- \(\texttt{FMT}\)
\[解决与FWT相同的问题 \\
实际上就是做一个高维前缀和作为正变换 \\
乘上一个 -1 就是逆变换
\]
例题
P3175
这题需要用到一个随机变量的离散分布
\[E(x=k) = (1-p)^{k-1}p(k \in \N^+) \\
E(X) = \sum_{i}iE(x=i) \\
E(X) = \sum_{i}i(1-p)^{i-1}p \\
E(X) = \dfrac{1}{p}
\]
然后我们根据题意可以得到
\[E(min(T)=k) = (1-P(S \oplus T))(P(S \oplus T))^{k-1}
\]
我们发现上面式子中的 \(p\) 就是 \((1-P(S \oplus T))\)
考虑如何求这东西,发现直接做一遍 \(\texttt{FWT}\) 或 \(\texttt{FMT}\) 即可
P5643
可以简单列出 \(dp\) 式子
\[dp_i = \dfrac{1}{deg_i}(dp_{fa_i}+\sum_{j \in son_i}dp_j)+1
\]
看起来需要消元,实际上直接待定系数法即可
\[设 dp_i = k_idp_{fa_i} + b_i \\
令 sumk_i = \sum_{j \in son_i}k_j \\
令 sumb_i = \sum_{j \in son_i}b_j \\
dp_i = \dfrac{1}{deg_i}(dp_{fa_i}+\sum_{j \in son_i}(k_jdp_i+b_j))+1 \\
dp_i = \dfrac{1}{deg_i}(dp_{fa_i}+sumk_idp_i+sumb_i)+1 \\
dp_i = \dfrac{1}{deg_i}dp_{fa_i}+\dfrac{sumk_i}{deg_i}dp_i+\dfrac{sumb_i}{deg_i}+1 \\
\dfrac{deg_i-sumk_i}{deg_i}dp_i = \dfrac{1}{deg_i}dp_{fa_i}+\dfrac{sumb_i}{deg_i}+1 \\
(deg_i-sumk_i)dp_i = dp_{fa_i}+sumb_i+deg_i \\
dp_i = \dfrac{1}{deg_i-sumk_i}dp_{fa_i}+\dfrac{sumb_i+deg_i}{deg_i-sumk_i} \\
k_i = \dfrac{1}{deg_i-sumk_i}, b_i = \dfrac{sumb_i+deg_i}{deg_i-sumk_i}
\]
我们惊讶的发现 \(dp_i\) 的系数是与父亲节点无关的,直接dfs一遍处理即可,然后从上往下dp即可
这时候直接套上\(\texttt{min-max}\)容斥,发现会TLE
但是\(\texttt{min_max}\)容斥中的后半部分跟点集S没关系
我们可以先处理每个T的答案,然后高维前缀和处理出S
记得要套上容斥系数
submission
本文来自博客园,作者:xxcxu,转载请注明原文链接:https://www.cnblogs.com/Maraschino/p/17498342.html