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 翻译