Loading

【题解】ARC087D Squirrel Migration

要使得 lca 尽可能的浅,那么选取树的重心作为根,每一对 \((u,p_u)\) 的 lca 都是根就是一个合法方案。

直接计算不太好计算。考虑容斥,要求某些点一定不满足条件,剩下的随意,计算方案数。具体可以考虑令 \(f_i\) 表示不满足要求的点有 \(i\) 个,这 \(i\) 个点的 \(p\) 的方案数,剩下的随便乱连乘上 \((n-i)!\) 和容斥系数即可。

不满足要求的点就是说 \(i,p_i\) 属于同一个重心的儿子的子树内 。令 \(g_{v,i}\) 表示重心的儿子 \(v\) 中有 \(i\) 对的方案数,那么选出这 \(i\) 个,然后在选出它们的 \(p\) 就行。最后只需要将 \(g_{v,i}\) 合并。

代码:Submission #26115773 - AtCoder Regular Contest 087

posted @ 2021-09-26 16:26  Qiuly  阅读(47)  评论(0编辑  收藏  举报