P14025 [ICPC 2024 Nanjing R] P ⊕ Q = R
题目描述
Alice 想要训练自己解决构造题的能力。所以她的朋友,超级人工智能 Kei,为 Alice 生成了以下问题。
给定一个整数 $n$,构造两个 $0,1,\dots,(n-1)$ 的排列 $P = p_1,p_2,\cdots,p_n$ 和 $Q = q_1,q_2,\cdots,q_n$,使得序列 $R = r_1,r_2,\cdots,r_n$ 仍然是一个 $0,1,\dots,(n-1)$ 的排列,其中 $r_i = p_i \oplus q_i$。这里 $x \oplus y $ 表示 $x$ 和 $y$ 按位异或的结果。
Alice 利用她强大的计算能力解决了这个问题,现在她决定和您分享这个问题。您能解决它吗?
输入格式
有多组测试数据。第一行输入一个整数 $T$ 表示测试数据组数。对于每组测试数据:
第一行输入一个整数 $n$($1 \leq n \leq 2 \times 10^5$)表示排列的长度。
保证所有数据 $n$ 之和不超过 $2 \times 10^6$。
输出格式
对于每组数据:
如果存在符合要求的两个排列,首先输出一行 $\texttt{Yes}$。接下来输出第二行,包含 $n$ 个由单个空格分隔的整数 $p_1,p_2,\dots,p_n$。最后输出第三行,包含 $n$ 个由单个空格分隔的整数 $q_1,q_2,\dots,q_n$。如果有多种合法答案,您可以输出任意一种。
如果不存在符合要求的两个排列,只要输出一行 $\texttt{No}$。
说明/提示
对于第二组样例数据,$R = \{ 3,0,1,2\}$ 仍然是 $0,1,2,3$ 的排列。
:::align{center}

:::