【做题记录】CF1101D GCD Counting
-
- 算法:树形
题目:
给出一棵树,树有点权,共 个点,求树上的一条链,满足:链上所有点的点权的 且链上的点数最多。注意一个点也可以构成一条链。 表示第 个点的点值。
题解:
首先不要去管 是多少,不用考虑重复计算。只要不互素。
对于每个节点 ,做一个很显然的数位 :用 表示以 为根节点往下去挂出的点的点权都能被 整除的最长链。
那么答案显然就是 。
对于 的转移很简单,往下搜遇到点 则更新继续搜,否则停止。
对于 ,因为显然这条链的 (也就是 )也是 的因子,所以 取 的质因子即可。
由于 ,而 ,所以 的取值一共才 个,常数极小。
然后一边转移一边更新答案即可。
时间复杂度 。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15776612.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步