树形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也一定可被探测。

posted @   80k  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示