#CF1971G. XOUR
XOUR
题目描述
给定一个由 个非负整数组成的数组 。
你可以交换位置 和 上的元素,当且仅当 ,其中 表示按位异或运算。
请找出通过任意次数的合法交换后,能够得到的字典序最小的数组。
如果在第一个不同的位置 和 满足 ,则数组 的字典序小于数组 。
输入格式
第一行包含一个整数 (),表示测试用例的数量。
每个测试用例的第一行包含一个整数 (),表示数组的长度。
每个测试用例的第二行包含 个整数 (),表示数组的元素。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出 个整数,表示通过任意次数的合法交换后能够得到的字典序最小的数组。
样例
4
4
1 0 3 2
5
2 7 1 5 6
8
1 2 1 2 1 2 1 2
4
16 4 1 64
0 1 2 3
1 5 2 6 7
1 1 1 1 2 2 2 2
16 4 1 64
样例说明
对于第一个测试用例,你可以交换任意两个元素,因此可以得到排序后的数组。
对于第二个测试用例,你可以交换 和 (它们的 为 ), 和 (它们的 为 ),以及 和 (它们的 为 ),从而得到字典序最小的数组。
由 ChatGPT 4.1 翻译
来源
Codeforces 1971G,英文题名 XOUR。