光之大陆
题目求的就是点仙人掌的数量;点仙人掌的所有环缩点之后就变成了一棵树,于是考虑无根树的数量怎么求,很显然利用Prufer序列就好了;然后考虑怎么将Prufer序列移植到点仙人掌上面,此时就要利用扩展Prufer序列
扩展Prufer序列:对于一个点仙人掌来说,先将所有环缩点变成一棵树,然后将所有缩点离散化(就是重新编号),指定编号最大的为根;执行Prufer操作,首先选择一个度数为
黑色是原图的编号,红色是缩点的编号;我们最开始选择缩点
由以上过程可知,如果我们知道了Prufer序列,有多少个缩点,每个点在哪个缩点内部,就可以唯一确定这个仙人掌;所以我们只需要解决以上三个问题就好了
有多少个缩点:枚举就好了,设有
每个点在哪个缩点内部:利用递推解决。设
,这一式子的意义是:我们假设第
Prufer序列的个数:这个比较简单,为
最终的答案:
,这一式子的意义是:枚举缩点个数
不算大小为
这个仙人掌既有可能在三个点单独为缩点的时候被统计,还有可能在相邻两个点为缩点,另一个点单独成为缩点的时候被统计
没看懂yxc那个代码的思路。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构