[XJTUPC 2025] Beat Verdict: Precision Strike
You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.
题目描述
这是一道交互题。
你正在玩一款名为「乌蒙滴叉」的音乐游戏。在专家模式中,需要精确校准音符的击打时机参数,该参数是一个 内的神秘正整数 。
为了确定这个参数,你可以进行至多 次校准测试。每次测试时,你选择一个正整数测试值 (),系统将告知你 是否成立。最终你需要给出一个正整数参数估计值 (),且满足 。
注意:最终给出的估计值 不计入上述至多 次测试次数。
输入格式
输入包含多个测试用例。数据的第一行包含一个整数 () 表示测试用例数。每个测试用例的交互流程在下文中描述。
在每个测试用例中,输入的第一行包含一个正整数 (),表示参数的可能范围。
若你想进行测试,输出 ? 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
提示
在第一组测试用例中,可以唯一确定 ,因此我们直接提交 。
在第二组测试用例中,隐藏的参数 ,交互过程如下:
- 测试 ,响应为 为真;
- 测试 ,响应为 为真;
- 测试 ,响应为 为假;
- 测试 ,响应为 为假;
- 提交 。
请注意,此示例仅用于演示交互格式。不能保证提供的查询是最优的或唯一确定答案。
暑期集训热身赛
- Status
- Done
- Rule
- ACM/ICPC
- Problem
- 10
- Start at
- 2025-7-6 8:00
- End at
- 2025-7-6 12:00
- Duration
- 4 hour(s)
- Host
- Partic.
- 26