https://codeforces.com/problemset/problem/2133/E
题解
第一个操作没那么好理解,因为询问了某个位置之后下一步逃犯还不能走那个位置。所以先用几个具体实例来理解这个追逃游戏。
在链上可以惊喜地发现,这个特性可以让我们在链长次询问得到逃犯的位置。而且联想一下,发现我们必须要用操作 1 问出逃犯的位置,也就是询问操作至少都要有 n 次。
接下来思考操作 2,发现操作 2 肯定是放在操作 1 前最优,肯定是先切断他能走的路,再用询问逼迫他。
然后问题就变成求,先去掉 n/4 个点,剩下一堆链的方案。
直接使用题解的方法 dp:
将树以节点 1 为根。定义绿色节点为其子树中某条路径的端点,黄色节点为其子树中某条路径的中间节点,黑色节点为我们执行操作 2 的节点。然后对每个节点:
如果它有三个或更多绿色子节点,或者有任何黄色子节点,则将其染为黑色。
否则,如果它恰好有两个绿色子节点(且其他子节点都是黑色),则将其染为黄色。
否则,将其染为绿色。