Loading

CF1746E Joking(分治,DP)

CF1746E Joking

有个数 \(x : 1\le x\le N\)。每次问一个集合,交互库告诉你这个数在不在集合中。相邻 \(2\) 个回复只有 \(1\) 个保证是真的。最后有 \(2\) 次猜答案的机会。最多问 \(53\) 次集合。\(N \le 100000\)

CODE

维护两个集合 \(T, F\) 表示前面一个询问如果是真 / 假 可能的答案集合。

每次问就问 \(T, F\) 的一半,然后更新 \(T, F\),发现最多次数 \(56\)

于是可以在 \(|T| + |F| < 50\) 的时候用 DP 找最优询问方式(其实可以用 DP 一路问到 \(|T| + |F| \le 2\) 为止,这样就不用特判了,而且可以从 \(55\) 卡到 \(53\))卡一下常。

posted @ 2022-11-04 10:19  Pizza1123  阅读(42)  评论(0)    收藏  举报