[ARC101E] Ribbons on Tree-
题意
给定一个树,节点数为 \(n\),将树上节点两两配对,对于每一对节点把路径染色,求所有边都被染色的配对方案数。
\[n\le5000,2 | n
\]
解法
首先对于 \(n\) 个点,随意配对方案为 \(\prod_{n/2}^{i}i\times2-1\),记为 \(g(j)\)。
考虑容斥,钦定断掉指定的 \(k\) 条边形成 \(k+1\) 个联通块,每个联通块内的方案数就是 \(g(siz(u))\times(-1)^k\)。
可以做个树型dp,设 \(f_{i,j,k}\) 为子树 \(i\),且该点所在联通块的大小为 \(j\),断边有 \(k\) 条,显然不可行。
我们考虑减少状态,我们直接让方案数带上我们的系数,减去第三维。在方案数带上系数的情况,状态转移有所改变。注意状态这里是没有计算当前连通块的方案数的。
\[f_{u,j}\times f_{v,k} \to f_{u,j+k}
\]
\[f_{u,j}\times f_{v,k}\times -g_k \to f_{u,j}
\]
第一种就是 \(u\) 到 \(v\) 的边连上,第二种断开,此时就会多一个断边,所以乘一个 \(-1\)。
最后计算答案不需要乘 \(-1\) 因为根节点没有断边。
理解的话,断边那里就是你钦定多断一条,就是联通块多一个。

浙公网安备 33010602011771号