Broken Queries
神秘小分讨。输在了不知道二分应不应该 上。
本文 0 index,左闭右开。方便起见,我们将题目描述改为:每次询问那个 是否在询问区间中,倘若询问区间长度大于等于 则回答者会撒谎。
我们假设有 。第一次,我们询问区间 ,那这一次他会撒谎,询问结果为 true 则说明那个 在右半区间,否则在左半中。我们可以直接前往不存在那个 的区间二分。
再假设 ,则第一次询问结果为 true 则说明那个 在左半区间,否则在右半区间中。如果 在左半区间,那么我们可以每次询问都覆盖住左半区间,每次以询问 的形式二分。否则,我们每次询问都覆盖住右半区间,每次以询问 的形式二分。
如何区分这两者?我们先假设 ,并前往了那个没有 的区间。我们再将这个区间砍成两半并分别询问,倘若 确实不在这个区间里,两次询问的回答应该相同,否则说明我们去了有 的区间,进而说明 。