CF1467E Distinctive Roots in a Tree
突然发现深究一些树上问题还是挺有意思的哈。
显然对于同一种权值的任意两个结点,其两端的部分都是不合法的。

维护两个标记表示子树内均不合法与子树外均不合法即可。但相同权值的点对数量是
发现很多点对都是无用的。DFS 下去,遇到一个
是 的祖先。 与 子树外的结点做没有影响。 不是 的祖先。不经过 权值的结点直接走到 的除 外的结点一定已经做过了且它们与 做没有影响。
红色结点表示
画图就会发现这个结论太容易得出啦。
最后再来一次 DFS 处理所有标记。记一下是否存在子树外均不合法标记和当前暂时合法的子树内合法结点数。当一个结点的两个儿子中都出现子树外均不合法标记时答案一定为
时间复杂度
多说一句,其实只要那些红色的点都做过就行了,具体谁与谁做无所谓。所以写成都与最上面那个祖先做会方便一点。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现