P17272 [eJOI 2026] XORting
题目描述
*这是一道交互题。*
Iliyan 对 Jonas 开了一个恶作剧:他藏起了整数 $0$ 到 $N-1$ 的一个排列 $p_0,p_1,\ldots,p_{N-1}$。Jonas 很想恢复这个排列,而你答应帮助他。
Iliyan 不会直接公布排列,但同意回答如下问题:你可以选择满足 $0\le i,j
输入格式
输入格式:
- 第 $1$ 行:两个整数 $T$ 和 $Q_{\mathrm{type}}$,其中 $Q_{\mathrm{type}}$ 为 $1$ 或 $2$;
- 接下来的 $2T$ 行描述各个测试:
- 第 $2i$ 行:一个整数 $N_i$;
- 第 $2i+1$ 行:$N_i$ 个整数 $p_0,p_1,\ldots,p_{N_i-1}$。
若 $Q_{\mathrm{type}}=1$,则 $Q_i=N_i$;若 $Q_{\mathrm{type}}=2$,则 $Q_i=N_i^2$。
输出格式
输出格式:
- 第 $i$ 行:程序在第 $i$ 个测试中返回的排列。
说明/提示
### 样例
考虑如下交互,其中 `solve` 被调用两次:
| 选手程序 | 评测程序 |
|---|---|
| | `solve(4)` |
| `get_xor(0, 1)` | 返回 `2` |
| `get_xor(0, 2)` | 返回 `3` |
| `get_xor(0, 3)` | 返回 `1` |
| `get_xor(1, 2)` | 返回 `1` |
| `get_xor(1, 3)` | 返回 `3` |
| `get_xor(2, 3)` | 返回 `2` |
| `return {0, 2, 3, 1}` | |
| | `solve(1)` |
| `return {0}` | |
### 第一次调用解释
隐藏排列为 $[2,0,1,3]$,但与它不可区分的字典序最小排列为 $[0,2,3,1]$。本次调用中 $N_1=4$,共询问 $6$ 次;由于该子任务中 $Q_1=N_1^2=16$,因此询问次数合法。
### 第二次调用解释
当 $N_2=1$ 时,唯一可能的排列为 $[0]$。
### 限制
- 对每个 $1\le i\le T$,均有 $1\le N_i\le 2^{20}$,其中 $N_i$ 是第 $i$ 次调用 `solve` 时的 $N$
- $1\le T\le 2^{10}$
- $T\cdot\max(N_1,N_2,\ldots,N_T)\le 2^{25}$
- 第 $i$ 次调用 `solve` 时,最多可询问 $Q_i$ 次;根据子任务不同,$Q_i$ 为 $N_i$ 或 $N_i^2$
### 子任务
| 子任务 | 分值 | $N_i$ | $T$ | $Q_i$ | 附加限制 |
|:--:|:--:|:--:|:--:|:--:|---|
| 0 | 0 | - | - | $N_i^2$ | 样例。 |
| 1 | 7 | $\le 2^3$ | $2^{10}$ | $N_i^2$ | - |
| 2 | 18 | $\le 2^7$ | $2^5$ | $N_i^2$ | - |
| 3 | 5 | $\le 2^{11}$ | $2^5$ | $N_i^2$ | - |
| 4 | 5 | $\le 2^{11}$ | $2^5$ | $N_i$ | - |
| 5 | 5 | $\le 2^{18}$ | $2^5$ | $N_i$ | 对某个整数 $k$,有 $N_i=2^k$。 |
| 6 | 5 | $\le 2^{18}$ | $2^5$ | $N_i$ | $N_i$ 为奇数。 |
| 7 | 30 | $\le 2^{18}$ | $2^5$ | $N_i$ | - |
| 8 | 25 | $\le 2^{20}$ | $2^5$ | $N_i$ | - |