@computerkiller
2021-04-03T15:19:05.000000Z
字数 2063
阅读 936
数学
题解
给你一棵树 和一个参数
我们定义 是序列 的重心 当且仅当点 是到 中各点距离和最小的点中编号最小的点 我们记
我们定义 表示 所有满足下列条件的序列 的集合:
求
首先注意 因为 是可能来自于 上的一条链的
但是来自链的只可能当 因此我们根据 的奇偶性分类考虑
直接考虑一个点 作为 重心 的方案数 类似于无标号无根树的技巧 我们容斥直接计算有一棵子树 满足
我们将 的子树记作 以 为例 方案的 是:
最后算答案 就是:
我们先把重心唯一的时候的结果算出来 考虑我们限制子树大小小于 这个时候的重心仍然是唯一的 算法和上面的一样 有个细节是 的最低次会被减 2 次 特判掉就可以了
接下来我们单独考虑存在一条路径的情况 我们假设这条路径是 也就是 的子树中有 个点 的子树中有 个结点 尝试对于 统计 作为重心的次数
考虑枚举一个含有 的联通块 联通块内编号 把这个联通块看成一个点之后 枚举两棵子树 满足 个点的 在该联通块内不在外面的子树 内
这样方案数是 但是这个联通块不好维护 我们按照编号枚举 用并查集维护即可
这部分特殊处理的复杂度是 的 总的复杂度是 复杂度瓶颈在分治 fft 上