AT_arc217_a [ARC217A] Min of Sum of XOR
题目描述
给定一个正整数 $N$。
请找到一个排列 $P=(P_1,P_2,\ldots,P_N)$,它是 $(1,2,\ldots,N)$ 的一个排列,使得 $\displaystyle \sum_{i=1}^N \bigoplus_{1\le j\le i} P_j$ 的值最小。
其中,$\displaystyle \bigoplus_{1\le j\le i} P_j$ 表示 $P_1,P_2,\ldots,P_i$ 的按位异或(bitwise XOR)。
你需要解决 $T$ 个测试用例。
什么是按位异或(bitwise XOR)?
对于非负整数 $A$ 和 $B$,$A \oplus B$ 的定义如下:
- 在 $A \oplus B$ 的二进制表示中,如果在 $A$ 和 $B$ 的二进制的第 $2^k$ 位($k\geq 0$)恰好有一个为 $1$,则该位为 $1$,否则为 $0$。
例如,$3 \oplus 5 = 6$(二进制:$011 \oplus 101 = 110$)。
一般而言,对于 $k$ 个非负整数 $p_1, p_2, ..., p_k$,它们的按位异或为 $(\dots ((p_1 \oplus p_2) \oplus p_3) \oplus \dots \oplus p_k)$,并且可以证明,不管异或的顺序如何,结果都一样。
输入格式
输入以标准输入给出,格式如下:
> $T$
> $\text{case}_1$
> $\text{case}_2$
> $\vdots$
> $\text{case}_T$
每个测试用例格式为:
> $N$
输出格式
按测试用例顺序输出答案,每个答案占一行。
对于每个测试用例,输出一个排列 $P=(P_1,P_2,\ldots,P_N)$,使得 $\displaystyle \sum_{i=1}^N \bigoplus_{1\le j\le i} P_j$ 的值最小。排列中的数用空格隔开。
如果有多个满足条件的排列,输出任意一个均可。
说明/提示
### 样例解释 1
以第一个测试用例为例:
如果 $P=(1,3,2)$,则 $\displaystyle \sum_{i=1}^N \bigoplus_{1\le j\le i} P_j=1 + (1 \oplus 3) + (1 \oplus 3 \oplus 2) = 1+2+0=3$。
$\displaystyle \sum_{i=1}^N \bigoplus_{1\le j\le i} P_j$ 的值不能小于 $3$,所以输出 $P=(1,3,2)$ 是正确的。
输出 $P=(2,3,1)$ 也是正确的。
### 数据范围
- $1\le T\le 10^3$
- $1\le N$
- 所有测试用例中 $N$ 的总和至多为 $2\times 10^5$
- 所有输入值均为整数。
由 ChatGPT 5 翻译