#P14025. [ICPC 2024 Nanjing R] P ⊕ Q = R

    ID: 15808 远端评测题 4000ms 1024MiB 尝试: 0 已通过: 0 难度: 7 上传者: 标签>2024Special Judge构造ICPC分类讨论南京

[ICPC 2024 Nanjing R] P ⊕ Q = R

题目描述

Alice 想要训练自己解决构造题的能力。所以她的朋友,超级人工智能 Kei,为 Alice 生成了以下问题。

给定一个整数 nn,构造两个 0,1,,(n1)0,1,\dots,(n-1) 的排列 P=p1,p2,,pnP = p_1,p_2,\cdots,p_nQ=q1,q2,,qnQ = q_1,q_2,\cdots,q_n,使得序列 R=r1,r2,,rnR = r_1,r_2,\cdots,r_n 仍然是一个 0,1,,(n1)0,1,\dots,(n-1) 的排列,其中 ri=piqir_i = p_i \oplus q_i。这里 xyx \oplus y 表示 xxyy 按位异或的结果。

Alice 利用她强大的计算能力解决了这个问题,现在她决定和您分享这个问题。您能解决它吗?

输入格式

有多组测试数据。第一行输入一个整数 TT 表示测试数据组数。对于每组测试数据:

第一行输入一个整数 nn1n2×1051 \leq n \leq 2 \times 10^5)表示排列的长度。

保证所有数据 nn 之和不超过 2×1062 \times 10^6

输出格式

对于每组数据:

如果存在符合要求的两个排列,首先输出一行 Yes\texttt{Yes}。接下来输出第二行,包含 nn 个由单个空格分隔的整数 p1,p2,,pnp_1,p_2,\dots,p_n。最后输出第三行,包含 nn 个由单个空格分隔的整数 q1,q2,,qnq_1,q_2,\dots,q_n。如果有多种合法答案,您可以输出任意一种。

如果不存在符合要求的两个排列,只要输出一行 No\texttt{No}

2
3
4
No
Yes
0 2 1 3
3 2 0 1

提示

对于第二组样例数据,R={3,0,1,2}R = \{ 3,0,1,2\} 仍然是 0,1,2,30,1,2,3 的排列。

:::align{center} :::