容斥专题

容斥

要用的式子

  1. 二项卷积

\[形式 c_n = \sum_i\binom{n}{i}a_ib_{n-i} \]

  1. 组合恒等式

\[\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} \]

  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) \\ \]

  1. \(\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}} \]

  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}容斥在期望下也成立 \]

  1. \(\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}) \\ \]

  1. \(\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

posted @ 2023-06-23 16:23  xxcxu  阅读(8)  评论(0编辑  收藏  举报