[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\) 因为根节点没有断边。

理解的话,断边那里就是你钦定多断一条,就是联通块多一个。

posted @ 2024-04-16 11:49  point_fish  阅读(6)  评论(0)    收藏  举报