CF1137D Cooperative Game
题目描述
这是一个交互题。
Misha 喜欢玩不完全信息的合作游戏。今天他邀请了他的十位朋友一起玩一个名为“湖泊”的合作游戏。
Misha 已经为即将到来的游戏设计好了场地。这个场地是一个有向图,由两部分组成。第一部分是沿湖岸的一条道路,这条道路是一个包含 $c$ 个顶点的环。第二部分是从家到湖边的一条路径,这条路径是一个包含 $t$ 个顶点的链,并且这条链的最后一个顶点有一条边指向湖岸道路上风景最美的顶点,也就是终点顶点。Misha 决定对场地保密,因此没有人知道 $t$ 和 $c$ 的具体数值。
注意,场地中的每个顶点恰好有一条出边,除了家和终点顶点外,其他所有顶点恰好有一条入边。家顶点没有入边,终点顶点有两条入边。
游戏开始时,所有十位玩家的棋子(编号为 $0$ 到 $9$ 的连续整数)都在家顶点。之后,每一回合,部分玩家可以请求 Misha 同时将他们的棋子沿着对应的边移动。Misha 最多会回答 $q$ 次这样的请求。每次移动后,Misha 会告诉玩家哪些棋子在同一个顶点,哪些棋子在不同的顶点。
游戏的目标是将所有棋子移动到终点顶点。Misha 的朋友们并不知道如何在不知道 $c$、$t$ 和 $q$ 的情况下获胜,但幸运的是他们有你这个朋友。请帮助他们:协调他们的行动以赢得游戏。
Misha 设计的场地满足 $1 \le t, c$,且 $t+c \leq 1000$,并且 $q = 3 \cdot (t+c)$。
输入格式
无输入 —— 请直接进入交互部分。
输出格式
当所有朋友都聚集到终点顶点后,输出 "done" 并终止你的程序。
交互说明
要发出移动朋友的命令,请输出 "next" 后跟要移动的朋友的编号(用空格分隔)。例如,要移动编号为 $0$、$2$、$5$ 和 $9$ 的朋友,请输出 "next 0 2 5 9"。每回合至少要移动一位朋友。
作为回应,先读入一个整数 $k$,然后读入 $10$ 个数字,分为 $k$ 个用空格分隔的组。编号在同一组内的朋友在同一个顶点,不同组的朋友在不同顶点。每组内的编号按升序排列。
例如,答案 "2 05 12346789" 表示编号为 $0$ 和 $5$ 的朋友在同一个顶点,其他所有朋友在另一个顶点。答案 "4 01 567 234 89" 表示 Misha 的朋友们分布在四个不同的顶点:编号为 $0$ 和 $1$ 的朋友在第一个顶点,编号为 $5$、$6$ 和 $7$ 的朋友在第二个顶点,编号为 $2$、$3$ 和 $4$ 的朋友在第三个顶点,编号为 $8$ 和 $9$ 的朋友在第四个顶点。
每次输出查询后不要忘记输出换行并刷新输出缓冲区,否则会因“Idleness limit exceeded”而被判为超时。具体做法如下:
- C++:fflush(stdout) 或 cout.flush()
- Java:System.out.flush()
- Pascal:flush(output)
- Python:stdout.flush()
- 其他语言请查阅相关文档。
如果收到的答案是 "stop" 而不是有效的分组,说明你的查询无效。收到 "stop" 后请立即退出程序,否则你的程序会继续从已关闭的流中读取数据,可能导致不可预期的判题结果。
Hack 说明
要进行 Hack,请在一行中输出两个整数 $t$ 和 $c$($1 \le t, c$,且 $t+c \leq 1000$)。
说明/提示
样例输入输出的对齐仅为便于按时间顺序理解。在实际交互中,不应出现“额外”的换行。
在示例中,朋友们的移动如下所示:

由 ChatGPT 4.1 翻译