CF1987H.Fumo Temple
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
这座神殿只会放大山的力量。
Badeline
这是一个交互题。
你将得到两个正整数 n 和 m($ \mathbf{n \le m} $)。
评测器为你隐藏了一个 n 行 m 列的矩阵 a,其中对于所有 1≤i≤n 且 1≤j≤m,都有 ai,j∈{−1,0,1}。评测器还选定了一个格子 (i0,j0)。你的目标是找出 (i0,j0)。
每次询问,你可以给出一个格子 (i,j),评测器会回复一个整数。
- 如果 (i,j)=(i0,j0),评测器回复 0。
- 否则,设 S 为所有满足 min(i,i0)≤x≤max(i,i0) 且 min(j,j0)≤y≤max(j,j0) 的 ax,y 的和。评测器将回复 ∣i−i0∣+∣j−j0∣+∣S∣。
你需要通过不超过 n+225 次询问找出 (i0,j0)。
注意:评测器是非自适应的,即 a 和 (i0,j0) 在所有询问前就已确定。
输入格式
每个测试包含多组数据。输入的第一行为一个整数 t(1≤t≤50)——表示测试用例的数量。接下来是每组测试用例的描述。
每组测试用例的唯一一行包含两个整数 n 和 m(1≤n≤m≤5000)——隐藏矩阵 a 的行数和列数。
保证所有测试用例的 n⋅m 之和不超过 25⋅106。
输出格式
每组测试用例的交互以读取 n 和 m 开始。
每次询问,输出 "? i j"(1≤i≤n,1≤j≤m),不带引号。随后,你应读取一个整数——本次询问的回复。
如果你收到 −1 作为回复,或者收到的 n 或 m 不合法,说明你的程序进行了非法询问、超出了询问次数限制,或在前一组测试用例中给出了错误答案。你的程序必须立即终止,否则会收到 Wrong Answer 判定。否则,你的程序继续从已关闭的流读取数据,可能会得到任意判定。
当你准备给出最终答案时,输出 "! i j"(1≤i≤n,1≤j≤m),不带引号,表示隐藏格子的下标。解决完一组测试用例后,应立即进入下一组。所有测试用例结束后,程序应立即终止。
每次输出后不要忘记输出换行并刷新输出缓冲区,否则会收到 Idleness limit exceeded 判定。具体做法如下:
- C++:fflush(stdout) 或 cout.flush()
- Java:System.out.flush()
- Pascal:flush(output)
- Python:stdout.flush()
- 其它语言请查阅相关文档。
Hack 格式
Hack 时请使用如下格式:
第一行一个整数 t(1≤t≤50)——测试用例数量。
每组测试用例的第一行包含两个整数 n 和 m(1≤n≤m≤5000)——隐藏矩阵的大小。
第二行包含两个整数 i0 和 j0(1≤i0≤n,1≤j0≤m)——隐藏格子的下标。
接下来 n 行,每行一个长度为 m 的字符串 si,仅包含字符 -, 0, +。其中 aij=−1 若 sij=−,aij=0 若 sij=0,aij=1 若 sij=+。
所有测试用例的 n⋅m 之和不超过 25⋅106。
例如,样例输入的 hack 格式为:
23414+0+0+00+0---11110
输入输出样例
输入#1
2 3 4 5 3 5 1 1 0
输出#1
? 1 1 ? 3 3 ? 3 2 ! 1 4 ? 1 1 ! 1 1
说明/提示
第一组样例的隐藏矩阵为:
1 0 1 0
1 0 0 1
0 −1 −1 −1
第二组样例的隐藏矩阵为:
0
注意,样例输入输出中的换行仅为便于展示,实际交互中不会出现。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?