ARC087D Squirrel Migration
题意 : 给出一棵
求使得
答案对
首先考虑如何求出
对每条边分别考虑贡献,设两侧的点数分别为
也可以构造出方案使得每条边的贡献达到上界。
以重心为根,对于每条边而言,深度较大的一侧则为点数较小的一侧。
记
对于每个点,寻找一个与自己处在根的不同分支的,未匹配的点,进行匹配即可。
(若某个点和同一个分支内的点匹配,则必然不优)
由于根的各个分支大小不超过整棵树的一半,故总能有这样的匹配。
接下来考虑计数。
- 只有一个重心
记第
问题可以转化为 : 有
考虑容斥,
接下来看
对于第
将各个颜色的方案卷积(背包)起来即可。复杂度为
若利用分治
则可以做到 。
- 有两个重心
找出连接两个重心的边,两侧的点数都恰好是
只需要两侧的点之间随意匹配即可,方案数为