#P10553. [ICPC 2024 Xi'an I] Guess The Tree
[ICPC 2024 Xi'an I] Guess The Tree
Description
有一个满二叉树,具有 层(因此它恰好有 个节点)。每个节点都有一个从 到 的整数 ID,这 个 ID 形成一个从 到 的排列,但你并不知道具体的排列。
你需要通过最多 次查询找到这 个节点的 ID。
Input Format
第一行包含一个整数 ,表示满二叉树的层数。
为了进行一次查询,你需要选择两个节点,其 ID 为 ,并输出如下格式的一行:
"? u v"
之后,你将收到:
"t"
即 和 的最近公共祖先的 ID。
你最多可以进行 次查询。
如果你已经找到了树的结构,输出如下格式的一行:
"! ... "
其中 表示第 个节点的父节点的 ID。如果没有父节点,则 。
在打印查询或测试用例的答案后,不要忘记输出行尾并刷新输出。否则,你将得到「Idleness Limit Exceeded」的判定。为此,请使用:
fflush(stdout) 或 cout.flush() 在 C++ 中;
System.out.flush() 在 Java 中;
stdout.flush() 在 Python 中。
此任务中的交互器不是自适应的。
2
3
3
3
? 1 2
? 2 3
? 1 3
! 3 3 -1
Hint
在这个例子中,树的根是 ,它的两个儿子是 和 。
对于任何查询 "? a b",如果 ,评测系统将返回答案 。
因此我们找到了树的根是 。(由 ChatGPT 4o 翻译)
京公网安备 11011102002149号