树形DP例题 cf801 div2 D2. Tree Queries (Hard Version)
题目链接:
https://codeforces.com/contest/1695/problem/D2
https://atcoder.jp/contests/apc001/tasks/apc001_e
解题思路:
可以考虑,对于每个节点v,其有k个子节点,则每个子节点中至少有k-1个侦查点,才能分清这k个点。
(否则存在两个点的子树中不存在侦查点,这两点无法被其他侦查点区分)
dp[v]表示在以v为根的子树中,分清,除v以外的节点需要的侦查点个数。
转移可以累计子节点的dp[ch],同时对于dp[ch]==0的x个子节点中,需要安插max(x-1, 0)个子节点
对于根节点r,由于取d(r)>=3,所以至少两个子树中存在侦查点,故r也一定可被探测。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人