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

浙公网安备 33010602011771号