题目链接
做法
这道题显然可以二分答案。
考虑构造解。对于每个军队,当它不能到达首都时,它的深度显然越小越好。对于可以到达首都的军队,它有两种决策:退回上一个位置、去填补其他子树的最上面节点。可以用倍增维护。
考虑一种特殊数据:1
2
3
4
5
65
1 2 5
1 3 2
1 4 5
4 5 1000000000
3 3 4 5
它的构造方案是 $ 5 \to 5, 4 \to 3, 3 \to 2 $ ,答案是 $ 7 $ 。
考虑一个能到达根节点的军队(从 $ root $ 的儿子 $ x $ 来),若它的步数还能回到上一个位置(并非时光倒流),则直接将它放在根节点考虑没有影响;否则它要么去一个 $ dis(root, x) \geq dis(root, y), y \in son(root) $ 的地方,要么待在 $ x $ 。这部分可以用 $ multiset $ 维护。
最后贪心地从首都分配军队。
1 |
|