P10064 [SNOI2024] 公交线路 题解

非常好题目。

思路#

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

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

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

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

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

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

考虑容斥。

我们设 dp1,i 为联通块内强制有 i 这个点,设 dp2,i 为联通块内强制有 i 这条边。

那么:

ans=dp1,idp2,i

如何求解?

首先考虑边的情况。

我们可以设 fi 为至少有 i 个叶子不与这条边联通,szi 表示 i 的子树大小,yzi 表示 i 的叶子数量。

那么:

fi+j=i=0yzxCyzxi2i×(szx1)i×(i1)2j=0yzyCyzyj2j×(szy1)j×(j1)2

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

暴力做是平方的。

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

然后考虑点的情况。

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

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

fi+j=fij=0yzyCyzyj2j×(szy1)j×(j1)2

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

最终复杂度:O(n2logn)

作者:JiaY19

出处:https://www.cnblogs.com/JiaY19/p/18026233

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   JiaY19  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示