题解 CF1370F2 The Hidden Pair (Hard Version)
link
容易想到先全局跑一遍,找到这两个点之间的简单路径长度 \(L\) 和之中的点,并把其作为根。
然后就不会做了。。。。深入思考?
不妨二分找出最大的深度使得此深度上存在一点离两个距离为 \(L\)。最多二分 \(\lceil\mathrm{log}_2{1000}\rceil=10\) 次。考虑最后一次二分会让我们精确地找出一个标记点,所以我们需要再花 \(1\) 次操作找出对应深度的点。这里注意如果两个点深度相同,那么查询另一点时需要把这个点避开。
操作总数=\(1+10+1=12>11\) 次,出题人特意构造!!!不过可以过 Easy Version 了。
这个时候不妨用一些 小小的 trick 优化掉。首先刚开始那一次肯定是无法优化的,最后那一次也肯定是无法优化的。那就只能优化二分了?想到优化上下界。发现下界 \(\geqslant \lceil \frac L 2 \rceil\),上界 \(\leqslant L\),那么范围 \(\leqslant \lfloor \frac L 2 \rfloor \leqslant 500\),便可以少一次二分。