AT_pakencamp_2025_day2_h Sunk Islands

题目描述

**本题为交互题。** 在“パ研洋”上漂浮着 $N$ 个岛屿,编号为 $1,2,\dots,N$。 还有 $N-1$ 座桥,第 $i$ 条桥连接岛屿 $U_i$ 和 $V_i$。这里,任意一个岛屿都可以通过某些桥经过若干次抵达其他任意岛屿。 “K 运営長”打算将这些岛屿全部纳入自己的支配,但他并不知道桥的结构。因此,他打算多次向了解桥结构的“パンサーカメレオン”的パ太郎提问,以此推断出桥的连接方式。 提问流程如下: 1. “K 运営長”选择 1 个及以上、最多 $N$ 个岛屿,并告知パ太郎。 2. パ太郎会按照以下要求,在这 $N$ 个岛屿中沉没一些岛屿,然后告诉 K 运営長最多能保留下多少座未被沉没的岛屿。 - 所有未被沉没的岛屿,必须都包含在 K 运営長选择的集合内。 - 保留下来的所有岛屿必须构成连通块,即任意两个保留下来的岛屿间,都可以通过桥经过若干次到达。 - 任意一个保留下来的岛屿,其相邻未沉没的岛屿不超过 2 个。 注意,这是パ太郎的思想实验,实际不会将岛屿沉没。 但由于パ太郎也很忙,他最多只会回答 $L$ 次提问。 给定岛屿数和允许向パ太郎提问的最大次数,要求编程实现 K 运営長推断所有桥连接关系的策略。

输入格式

首先,标准输入给出 $N,L$。 ``` N L ``` 接下来,你可以与パ太郎进行至多 $L$ 次交互,每次提问的输出格式如下: 假设你选择的岛屿集合为 $s_1,s_2,\dots,s_n$,则应输出: ``` ? n s_1 s_2 ... s_n ``` 之后,パ太郎会返回整数 $X$,输入格式如下: ``` X ``` 这里 $X$ 含义如下: - 若 $X\ne -1$,则表示回答为 $X$。 - 若 $X=-1$,则表示你提问的次数超过了 $L$ 次,或者提问格式不正确。 - 此时,程序已被判为不正确,请立即终止程序。 当你确定得出了所有桥的整体结构之后,请按如下格式在一行内输出,且该输出不计入次数限制: ``` ! u_1 v_1 u_2 v_2 ... u_{N-1} v_{N-1} ``` 其中每对 $u_i,v_i$ 表示一座桥连接的两个岛屿,且同一座桥不可重复输出。输出后,程序需立即终止。 如任一次输出不满足上述任何规定,会收到输入 `-1`。 ``` -1 ``` 此时程序已被判为错误,请立即终止程序。

输出格式

见上文描述。

说明/提示

## 子任务 1. (5 分) $L=33000$ 2. (25 分) $L=10000$ 3. (20 分) $L=6400$ 4. (50 分) $L=4600$ ## 注意事项 - **每次输出后,都要在末尾加上换行并立刻刷新输出缓冲区,否则可能会因 TLE 被判超时。** - 当输出答案或收到 `-1` 时,请立即终止程序,否则结果不可预期。 - 多余的换行被视为输出格式不正确。 - **评测环境为非自适应(non-adaptive)**,即所有岛屿的桥连接在对话开始前就已确定,不会因过程中交互而改变。 ## 输入输出样例说明 以 $N=5, U=(1,2,2,2), V=(2,3,4,5), L=10$ 为例,交互示例如下: | 输入输出 | 内容 | 说明 | | ---------------| --------------------------------------- | ------------------------------------------------------ | | 输入 | `5 10` | 首先输入 $N,L$ | | 输出 | `? 2 1 2` | 向パ太郎提问 $s=\{1,2\}$ | | 输入 | `2` | 保留 $1,2$,沉没其他岛屿,最大为 2 | | 输出 | `? 4 1 3 4 5` | 提问 $s=\{1,3,4,5\}$ | | 输入 | `1` | 只可保留 $1$,沉没其他岛屿 | | 输出 | `? 4 2 3 4 5` | 提问 $s=\{2,3,4,5\}$ | | 输入 | `3` | 可保留 $2,3,4$,沉没 $5$ | | 输出 | `! 1 2 3 2 5 2 2 4` | 提交答案并终止程序。 | 请注意,这只是交互的一种示例,未必足以推断所有桥的结构,且该组数据不一定符合实际评测数据的约束条件。 ## 数据范围 - $N = 256$ - $1 \leq U_i,V_i\leq N\quad(1\leq i\leq N-1)$ - 任意两个岛屿均可经若干桥直达对方。 由 ChatGPT 5 翻译