「LOJ#3399」Communication Network

\[\begin {align*} & \sum_{T2}|T1\cap T2|\cdot 2^{|T1\cap T2|} \\ = & \sum_{T2} \sum_{S\subseteq T1\cap T2} \sum_{T\subseteq S} \left(-1 \right)^{|S| - |T|} |T|\cdot 2^{|T|} \\ = & \sum_{S\subseteq T1} f_S \left(-1 \right)^{|S|} \sum_{T\subseteq S} \left(-1 \right)^{|T|} |T|\cdot 2^{|T|} \\ = & \sum_{S\subseteq T1} f_S \left(-1 \right)^{|S|} \sum_{k = 0}^{|S|} \binom {|S|} {k} k\left(-2 \right)^{k} \\ = & \sum_{S\subseteq T1} \left(-2|S| \right) \cdot f_S \left(-1 \right)^{|S|} \sum_{k = 0}^{|S| - 1} \binom {|S| - 1} {k - 1} \left(-2 \right)^{k - 1} \\ = & \sum_{S\subseteq T1} \left(-2|S| \right) \cdot f_S \left(-1 \right)^{|S|} \left(-1 \right)^{|S| - 1} \\ = & 2\sum_{S\subseteq T1} |S| \cdot f_S \\ = & \frac {2} {n^{2}} \sum_{S\subseteq T1} |S| \prod n\cdot a_i \end {align*} \]

其中 \(f_S\) 表式包含边集 \(S\) 的树的数目,\(k\) 表示 \(S\) 形成的连通块数目,\(\{a_i\}\) 表示 \(S\) 形成的各个连通块大小。

考虑组合意义。对于一个边集 \(S\),它对答案的贡献是:选出不在 \(S\) 中的一条边,在每个连通块中选一个点对答案造成乘 \(n\) 的贡献。并对所有 \(S\) 求和。

考虑 dp。记 \(dp_{u,0/1,0/1}\) 表示考虑 \(u\) 这棵子树,\(u\) 所在的连通块中是否选点,\(u\) 子树中是否选边,所有已确定连通块的贡献的和。

转移是显然的就是容易写错

Code

posted @ 2020-12-16 20:04  realSpongeBob  阅读(165)  评论(0编辑  收藏  举报