一道很有意思的题。
先让我们来观察一下。题目说的这个树是一个二叉树,所以每个点的度数小于等于三。
然后,题目要求我们找到一个树里面的点。并且只有 $\log n$ 次询问机会。$\log n$,定位某个点。好像在哪里见过?这很像 P4886。那道题我们用的是点分治的思路。所以这道题也是类似。我们进行点分治。比如说我们目前的的分治中心在 $c$。那么有三种情况。
-
$c$ 只有一个儿子
这种情况判断一下答案在不在儿子的子树内,如果在就直接往那个儿子递归就可以了。
-
$c$ 有两个儿子
设两个儿子分别为 $x,y$。然后询问
? x y。如果结果不为 $1$,我们就往距离答案近的儿子递归。否则答案就是 $c$。 -
$c$ 有三个儿子
设三个儿子分别为 $x,y,z$。将三个儿子按照子树大小从大到小排序。然后询问
? x y。如果结果不为 $1$,我们就往距离答案近的儿子递归。否则答案要么为 $c$,要么在 $z$ 的子树里。进行递归即可。
复杂度:就是点分治的复杂度 $O(n \log n)$。
