#P12531. [XJTUPC 2025] Beat Verdict: Precision Strike
[XJTUPC 2025] Beat Verdict: Precision Strike
题目描述
这是一道交互题。
你正在玩一款名为「乌蒙滴叉」的音乐游戏。在专家模式中,需要精确校准音符的击打时机参数,该参数是一个 内的神秘正整数 。
为了确定这个参数,你可以进行至多 次校准测试。每次测试时,你选择一个正整数测试值 (),系统将告知你 是否成立。最终你需要给出一个正整数参数估计值 (),且满足 。
注意:最终给出的估计值 不计入上述至多 次测试次数。
输入格式
输入包含多个测试用例。数据的第一行包含一个整数 () 表示测试用例数。每个测试用例的交互流程在下文中描述。
在每个测试用例中,输入的第一行包含一个正整数 (),表示参数的可能范围。
若你想进行测试,输出 ? y
()。然后你读入对该测试的响应,为一个整数 (), 表示 为真, 表示 为假。
若你想提交参数 ,输出 ! x'
()。然后你立即结束本个测试用例的交互,并准备下一个测试用例的交互。这次交互不计入上述至多 次测试次数。
注意在你的程序每轮输出结束时(即,每一次输出 ? y
或 ! x'
后),需要输出回车并刷新输出缓冲区,否则你将会得到 。
你可以使用:
- C 的
fflush(stdout)
; - C++ 的
cout.flush()
; - Java 的
System.out.flush()
; - Python 的
stdout.flush()
;
来刷新输出缓冲区。
请注意:交互库自适应,即每个测试用例中的正整数 () 可能会随着你的输入而变化,但始终满足所有已经发生过的询问。
如果你最后输出的答案正确,你会得到 ;
如果你给出的询问不符合题目范围要求,或最后输出的答案不正确,你会得到 ;
此外,其他的评测结果仍会在评测过程中根据通常情况返回。
输出格式
见输入格式。
2
1
8
1
1
0
0
! 1
? 6
? 4
? 2
? 3
! 3
提示
在第一组测试用例中,可以唯一确定 ,因此我们直接提交 。
在第二组测试用例中,隐藏的参数 ,交互过程如下:
- 测试 ,响应为 为真;
- 测试 ,响应为 为真;
- 测试 ,响应为 为假;
- 测试 ,响应为 为假;
- 提交 。
请注意,此示例仅用于演示交互格式。不能保证提供的查询是最优的或唯一确定答案。