#P16914. [JLCPC 2026] 隐藏的 k 元组

    ID: 19232 远端评测题 2000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>二分吉林交互题Special JudgeO2优化2026省赛/邀请赛

[JLCPC 2026] 隐藏的 k 元组

题目描述

这是一个交互题。

有一个隐藏的划分,将整数 1,2,,n1, 2, \ldots, n 分成 nk\dfrac{n}{k} 个互不相交的 kk 元组。保证 nnkk 的倍数。你需要通过询问找出所有隐藏的 kk 元组。

一次询问中,你可以选择一个集合 S{1,2,,n}S \subseteq \{1, 2, \ldots, n\},交互库会返回一个整数,表示有多少个隐藏的 kk 元组被完整包含SS 中。

你的询问次数不能超过 n×log2nn \times \lceil \log_2 n \rceil 次。

\lceil \cdot \rceil 是上取整符号,x\lceil x \rceil 表示不小于 xx 的最小整数。例如 7=7\lceil 7 \rceil = 73.14=4\lceil 3.14 \rceil = 4

输入格式

程序开始时,交互库会输出一行两个整数 nnkk2n3002 \le n \le 3002kn2 \le k \le n,并且 nnkk 的倍数)。

隐藏的划分由交互库保存,不会直接给出。

在你每次输出一次合法询问之后,交互库会返回一行一个整数 rr,表示有多少个隐藏的 kk 元组被完整包含在你询问的集合中。

输出格式

你可以进行如下形式的询问:

? c x1 x2  xc\texttt{? c $x_1$ $x_2$ $\ldots$ $x_c$}

其中 0cn0 \le c \le n,且 x1,x2,,xcx_1, x_2, \ldots, x_c 必须是两两不同的整数,满足 1xin1 \le x_i \le n

该询问表示你选择集合 S={x1,x2,,xc}S=\{x_1,x_2,\ldots,x_c\}。交互库会返回一个整数 rr,表示有多少个隐藏的 kk 元组被完整包含在 SS 中。

当你确定答案后,需要输出:

! a1 a2  an\texttt{! $a_1$ $a_2$ $\ldots$ $a_n$}

其中 aia_i 表示元素 ii 所在的元组编号。编号必须满足 1aink1 \le a_i \le \dfrac{n}{k}。如果两个元素属于同一个隐藏元组,则它们的编号必须相同;如果两个元素属于不同隐藏元组,则它们的编号必须不同。元组编号的顺序可以任意。

你的询问次数不能超过 n×log2nn \times \lceil \log_2 n \rceil 次。输出最终答案后,你的程序应立即结束。

注意,每次输出询问或最终答案后都必须刷新输出缓冲区。例如,在 C++ 中可以使用 fflush(stdout)cout << flush

如果你的输出格式非法、询问次数超过限制,或最终答案错误,将得到 Wrong Answer 或 Presentation Error。

交互库是非自适应的,即所有的 kk 元组在交互前就已经确定好,不会随着询问的发生而改变。

6 2

1

1

3
? 3 1 3 5

? 4 2 3 4 5

? 6 1 2 3 4 5 6

! 1 2 1 3 3 2

提示

在下面的例子中,n=6n = 6k=2k = 2,隐藏的元组为 {1,3}\{1, 3\}{2,6}\{2, 6\}{4,5}\{4, 5\}

$$\def\arraystretch{1.5} \begin{array}{|l|c|} \hline \textbf{程序} & \textbf{交互库} \\ \hline & \verb!6 2! \\ \hline \verb!? 3 1 3 5! & \verb!1! \\ \hline \verb!? 4 2 3 4 5! & \verb!1! \\ \hline \verb!? 6 1 2 3 4 5 6! & \verb!3! \\ \hline \verb|! 1 2 1 3 3 2| & \\ \hline \end{array}$$
  • 询问 {1,3,5}\{1,3,5\}:元组 {1,3}S\{1,3\} \subseteq S,答案为 11
  • 询问 {2,3,4,5}\{2,3,4,5\}:元组 {4,5}S\{4,5\} \subseteq S,答案为 11
  • 询问 {1,2,3,4,5,6}\{1,2,3,4,5,6\}:三个元组都被包含,答案为 33
  • 输出 [1,2,1,3,3,2][1, 2, 1, 3, 3, 2] 表示:元素 1,31, 3 组成第 11 组;元素 2,62, 6 组成第 22 组;元素 4,54, 5 组成第 33 组。