题意
一棵大小为 n 的树,有 k 个人,第 i 个人在结点 ai。
从第 1 秒开始,依次操作第 1,2,3,…,k,1,2,3,…,k,1,2,3,…,k,… 个人,每秒操作一个人,把这个人移动到没有被走过的结点(包括其他人走过的)。当不能移动时结束。
问最多能操作多少次,多测。
思路
非常简单 就可以想到答案可以二分。因为如果当前总步数能够实现,那么更小的也一定能实现。
我们考虑以 1 为根。
先考虑最下面的点。如果它能够往下走,那么它一定会往下走(这样更优)。否则我们只能走到它的父亲,并等到递归到它父亲时再继续安排路径。
具体细节:
我们对于每个点 u 求一个能够往下走的最深的深度 depu,有
(v∈sonu&colv=white)depu=max(depv+1)。
每个点存一个 ai 表示它还需要走 ai−1 步。若 ai=0 则表示这个点是白色,否则就是黑色。
3万+

被折叠的 条评论
为什么被折叠?



