题解 P8849 『JROI-7』hibernal

$\texttt{link}$

这个题很有趣啊。

设答案为 $a,b$,交互次数小于 $19$,是 $2\log_2 n-1$,考虑如何在两次 $\log$ 的询问求出答案。

仔细思考一下,发现可以对每一位是 $1$ 和每一位是 $0$ 的分一组,这样可以求出 $a,b$ 的异或和 $c$。

若 $c$ 的 $k$ 位为 $1$,钦定 $a$ 的第 $k$ 位为 $1$,对于所有 $i\ne k$,将 $\left[1,n\right]$ 中第 $i$ 位和第 $k$ 位均为 $1$ 的数拿出来询问。若返回 $1$,说明 $a$ 的第 $i$ 位是 $1$,否则 $a$ 的第 $i$ 位是 $0$。

求出 $a$ 和 $a \oplus b$ 后,$b$ 也知道了,询问次数恰好是 $2\log_2 n-1$。

posted @ 2022-11-12 20:01  Terac  阅读(9)  评论(0)    收藏  举报  来源