这是一道交互题
题目大意
有一棵 n n 个点的树。最开始 号点是白的,其他点是黑的。
每次你可以执行一个操作: explore(x,y) e x p l o r e ( x , y ) 。要求 x x 是一个白点。该函数会返回从 到 y y 的路径上第二个点的坐标并把该点染白。
要求你把所有点都染成白色。
设操作次数为 。
对于 30% 30 % 的数据:这棵树是一条链(不保证 1 1 在链的一端),
对于另外 70% 70 % 的数据: n=300000,t=O(nlogn) n = 300000 , t = O ( n log n )
题解
数据范围告诉我们链的情况要分开做。
做法1
有一个简单的做法:维护当前白色节点的两段,每次加入一个新的节点,如果这个节点是黑的,就先判断这个点在一号点的左边还是右边,在进行扩展。
可以证明扩展次数是 2