CF2134E Power Boxes
题目描述
这是一个交互题。
你有 $n$ 个盒子,编号从 $1$ 到 $n$。这些盒子外观完全相同,但每个盒子有一个隐藏的力量值 $a_i$,其取值为 $1$ 或 $2$。
你需要确定每个盒子的力量值。为此,你可以进行如下实验:最初,第 $i$ 个盒子被放置在数轴上的坐标 $i$ 处($1 \le i \le n$)。
你可以进行以下两种类型的操作:
- “swap $x$” ($1 \le x \le n - 1$):交换当前位于坐标 $x$ 和 $x + 1$ 的两个盒子。注意,这个变化是永久的,会影响之后所有的操作。
- “throw $x$” ($1 \le x \le n$):向当前位于坐标 $x$ 的盒子扔一个球。如果该盒子的力量值为 $p$,球会向前跳 $p$ 个单位,落到坐标 $x + p$(如果那里有盒子,球会继续根据该盒子的力量跳跃)。如此反复,直到球落到没有盒子的坐标为止。作为回应,你会得到球在停止前一共跳跃了多少次。
你的任务是在不超过 $\left\lceil \frac{3n}{2} \right\rceil$ 次操作(包含 swap 和 throw 总数)的前提下,确定每个盒子的力量值。
输入格式
每个测试点包含多个测试用例。第一行包含测试用例数 $t$($1 \le t \le 500$)。每个测试用例的描述如下:
每个测试用例的第一行包含一个整数 $n$($2 \le n \le 1000$),表示盒子的数量。
保证所有测试用例中 $n$ 的总和不超过 $1000$。
输出格式
(本题为交互题,具体交互格式参见题目描述与提示。输入和输出请结合判题器的交互接口实现。)
说明/提示
以下为示例交互过程:
SolutionJuryExplanation2有 $2$ 组测试数据。4第一组测试数据有 $4$ 个盒子,隐藏的力量值为 $a = [2,1,2,1]$。
throw 2
在坐标 $2$ 的盒子扔一个球。球会经过 $2 \to 3 \to 5$,在 $5$ 坐标停止,因此返回 $2$。
swap 3
交换坐标 $3$ 和 $4$ 上的盒子。现在第 $3$ 个盒子在坐标 $4$,第 $4$ 个盒子在坐标 $3$。
throw 2
在坐标 $2$ 的盒子再扔一个球,球经过 $2 \to 3 \to 4 \to 6$,在 $6$ 坐标停止,返回 $3$。注意由于交换,返回值变化了。
throw 1
在坐标 $1$ 的盒子扔一个球,球经过 $1 \to 3 \to 4 \to 6$,最终停在 $6$,返回 $3$。
! 2 1 2 1
最终得到的结果为 $[2,1,2,1]$。
2第二组测试数据有 $2$ 个盒子,隐藏力量值为 $a = [1,2]$。
throw 1
在坐标 $1$ 的盒子扔一个球,球经过 $1 \to 2 \to 4$,返回 $2$。
swap 1
交换坐标 $1$ 和 $2$ 上的盒子。现在第 $1$ 个盒子在坐标 $2$,第 $2$ 个盒子在坐标 $1$。
throw 1
在坐标 $1$ 的盒子扔一个球,球直接跳到 $3$,返回 $1$。
! 1 2
最后答案为 $[1,2]$。
(示例输入输出中的空行仅为排版清晰,你的程序输出时不需要输出这些空行。)
注意,在第一个样例中,所给的操作实际上并无法唯一确定所有盒子的力量值,仅用于说明输入输出格式。
由 ChatGPT 5 翻译