CF2273B Robot Championship
题目描述
Fran 和 Sofia 成为了机器人灵气大战的忠实粉丝,于是她们决定自己举办一场机器人灵气锦标赛。由于 Sofia 是一位机器人专家,Fran 需要你的帮助来赢得冠军。
比赛在一个 $n \times n$ 的棋盘上进行。行号自底向上编号,列号自左向右编号,因此 $(1,1)$ 是左下角,$(n,n)$ 是右上角。对手的机器人隐藏在某个未知的格子 $(i, j)$ 中,并且每秒钟会移动一次,但你看不见它的移动。
在每一秒 $s$ 的开始,机器人移动前,你必须选择一个整数 $v$,其中 $2 \le v \le 2n$,并沿着对角线
$$
\{\, (r, c) \mid r + c = v \,\}
$$
发射激光。如果机器人此时处在这一对角线上,你立即获胜。否则,在你发射激光以后,假设机器人当前位于 $(r, c)$,它将移动到下列之一的格子(前提是还在棋盘内):
- 上方:$(r + 1, c)$;
- 右方:$(r, c + 1)$;
- 左下方:$(r - 1, c - 1)$。

上图中,机器人位于格子 $(3,2)$(其对角线为 $r+c=5$)。绿色激光是对角线 $v=7$,未命中机器人。
机器人是对抗性的:它可以选择任意初始位置,也可以选择任意合法的移动序列。你需要输出一个固定长度不超过 $3n$ 的对角线序列 $v_1, v_2, \ldots, v_k$,使得无论机器人起始于哪里、怎么移动,至少有一次激光一定能够命中它。
输入格式
每组输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 44$),表示测试数据组数。
每组测试数据仅包含一行,一个整数 $n$($2 \le n \le 100$),表示棋盘大小。
保证所有测试组 $n^3$ 的和不超过 $10^6$。
输出格式
对于每组测试数据,输出两行。第一行一个整数 $k$($1 \le k \le 3n$),表示激光数。
第二行输出 $k$ 个整数 $v_1, v_2, \ldots, v_k$($2 \le v_i \le 2n$),表示按顺序发射的对角线。
输出任意合法的方案均可。
说明/提示
对于 $n = 2$,序列 $3, 3, 3$ 是有效的。第一发激光 $3$ 能覆盖对角线 $r + c = 3$(格子 $(1,2)$ 和 $(2,1)$)。格子 $(1,1)$ 必须在下一步移动到同一对角线上,格子 $(2,2)$ 必须按照路径 $(2,2) \to (1,1) \to$ 同一对角线移动。第二、三发激光全部能够命中。
对于 $n = 3$,序列 $4, 4, 4$ 是有效的。若机器人在对角线 $r + c = 4$ 上,则第一发激光直接命中。若它在对角线 $r + c = 3$ 或在格子 $(3,3)$,每次移动必然进入 $r + c = 4$,第二发激光可命中;如果它在格子 $(1,1)$ 或对角线 $r + c = 5$,则每次移动必然进入 $r + c = 3$ 或到达格子 $(3,3)$,第三发激光必定命中。
由 ChatGPT 5 翻译