QOJ.ac

QOJ

시간 제한: 3.0 s 메모리 제한: 1024 MB 총점: 100 난이도: [표시] 인터랙티브 해킹 가능 ✓

#18002. 向往彼方 2

통계

辛苦了,亲爱的。小青鱼不知道他的密码能传达多少,但依然感谢你和小青鱼一起走到这里。 发生了太多事,太多荒诞的事,小青鱼累了,真的很累……在过去的一年里,小青鱼好几次觉得自己在自救,但终究,他还没有强大到可以斩断身上的丝线。小青鱼总是幻想,在那个遥远的地方,有另一个自己,能清晰地看到他生命的地图。

—— “向往彼方” · 第十届中国大学生程序设计竞赛总决赛

这是一个交互式问题。

好吧,也许你可以尝试一下,这会有多难。小青鱼觉得他的生活是一个形状未知的排列。人们总是说世界充满了随机性,但为什么小青鱼总是这么倒霉……?啊!也许随机性就是如此深奥!所以,小青鱼决定他的这个排列将通过以下方式随机生成:

  • 随机生成一个排列 $p_1, p_2, \dots, p_n$:从 $1$ 到 $n$ 的所有 $n!$ 种可能排列中等概率均匀随机选择。
  • 如果 $p_1 > p_n$,则翻转整个排列。

你无法直接观察到排列的结构,但小青鱼赋予了你一种超能力:询问!每次你可以交互式地查询排列中两个数之间距离模 3 的值。具体来说,每次你可以选择两个数 $u, v$($1 \le u, v \le n$ 且 $u \neq v$),系统会告诉你这两个数在排列中位置距离模 3 的值(即找到满足 $p_i = u, p_j = v$ 的两个下标 $i, j$,系统将回答 $|i - j| \bmod 3$)。

现在,小青鱼想让你尝试一下,看看你能得到什么。你需要帮助小青鱼在不超过 $25n$ 次询问内确定这个排列。

输入格式

每个测试点包含多个测试用例。输入的第一行包含一个整数 $T$($1 \le T \le 1000$),表示测试用例的数量。

对于每个测试用例,首先你需要读取一个整数 $n$($3 \le n \le 10^4$)。

交互

接下来开始交互。在每个测试用例中,你最多可以进行 $25n$ 次询问。要进行询问,你需要输出单行 ? u v($1 \le u, v \le n$ 且 $u \neq v$),表示一次询问。然后,你需要从标准输入中读取结果。

要给出你的答案,你需要输出 ! p1 p2 ... pn。你的输出必须满足 $p_1 < p_n$。输出答案不计入 $25n$ 次询问的限制。输出答案后,你需要立即读取下一个测试用例,或者立即退出程序。

在输出询问后,请不要忘记输出换行符并刷新输出流。为此,你可以在 C++ 中使用 fflush(stdout)cout.flush(),在 Java 中使用 System.out.flush(),在 Pascal 中使用 flush(output),以及在 Python 中使用 stdout.flush()

保证所有测试用例中 $n$ 的总和不超过 $10^4$。

在本题中,保证交互器是非自适应的(non-adaptive)。也就是说,排列在交互过程开始之前就已经按照前文所述随机确定,它们不会根据你的询问而改变。共有 30 个测试点(包括样例测试点)。

样例

输入样例 1

2
3
2
1
1
4
1
1
1
0
2

输出样例 1

? 1 2
? 2 3
? 1 3
! 1 3 2
? 2 3
? 3 1
? 1 4
? 2 4
? 2 1
! 2 3 1 4

说明

图 1:小青鱼与 <?> 在 <?>,拍摄于 2026 年 3 月 4 日

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.