CF1824B2
首先根据猜结论数学归纳法可以想到在
因此我们只考虑
方法1:
容易想到好点相当于这棵树上只考虑
则显然根据重心定义,我们枚举每个点为重心的情况,则对于他的每个儿子,我们可以用dp或者容斥原理来从中选出
因为发现对于每个儿子最多有一个儿子内选的点的个数
这样我们就可以得到一个
我们考虑优化一下做法,显然
设
观察
因此可以得到
于是我们可以实现
方法2:
首先可以证明好点一定对应树上的一个连通块,根据重心的定义,这是显然的(其实限制更严格,答案在树上是一条链,但这里不需要这么严格的限制)
我们考虑计算树上的点并不好算,但如果对于一条边
而且由于答案在树上是一个联通快,我们可以通过联通块内边的个数+1得到联通快内点的个数
因此我们对于每条边考虑他左右两边各选
同样可以做到
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?