Loading

P10064 [SNOI2024] 公交线路 题解

非常好题目。

思路

可以发现限制最严的一定是两个叶子的联通性。

我们不妨把一个叶子向外起到联通性作用的路径称为有用的路径。

也就是这个叶子走这条路径一定可以两步以内到达任意点。

这个路径集合有什么作用呢。

有一个性质:整个集合的路径的交最终会形成一个连通块。

那么我们就可以进行求解方案数。

考虑容斥。

我们设 \(dp_{1,i}\) 为联通块内强制有 \(i\) 这个点,设 \(dp_{2,i}\) 为联通块内强制有 \(i\) 这条边。

那么:

\[ans=\sum dp_{1,i}-\sum dp_{2,i} \]

如何求解?

首先考虑边的情况。

我们可以设 \(f_i\) 为至少有 \(i\) 个叶子不与这条边联通,\(sz_i\) 表示 \(i\) 的子树大小,\(yz_i\) 表示 \(i\) 的叶子数量。

那么:

\[f_{i+j}=\sum_{i=0}^{yz_x}C_{yz_x}^i 2^{i\times(sz_x-1)-\frac{i\times(i-1)}{2}}\sum_{j=0}^{yz_y}C_{yz_y}^j 2^{j\times(sz_y-1)-\frac{j\times(j-1)}{2}} \]

当然还要乘其他不重要的边的方案数,也是一个二的次幂。

暴力做是平方的。

容易发现可以多项式优化。

然后考虑点的情况。

同样可以设 \(f_i\) 为至少有 \(i\) 个叶子不与这个点联通。

那么加入一颗子树的代价是:

\[f_{i+j}=\sum f_i\sum_{j=0}^{yz_y}C_{yz_y}^j 2^{j\times(sz_y-1)-\frac{j\times(j-1)}{2}} \]

同样是卷积形式,可以多项式优化。

最终复杂度:\(O(n^2 \log n)\)

posted @ 2024-02-21 21:10  JiaY19  阅读(18)  评论(0编辑  收藏  举报