CF1971G.XOUR
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个由 n 个非负整数组成的数组 a。
你可以交换位置 i 和 j 上的元素,当且仅当 ai XOR aj<4,其中 XOR 表示按位异或运算。
请找出通过任意次数的合法交换后,能够得到的字典序最小的数组。
如果在第一个不同的位置 x 和 y 满足 xi<yi,则数组 x 的字典序小于数组 y。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105),表示数组的长度。
每个测试用例的第二行包含 n 个整数 ai(0≤ai≤109),表示数组的元素。
保证所有测试用例中 n 的总和不超过 2⋅105。
输出格式
对于每个测试用例,输出 n 个整数,表示通过任意次数的合法交换后能够得到的字典序最小的数组。
输入输出样例
输入#1
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
输出#1
0 1 2 3 1 5 2 6 7 1 1 1 1 2 2 2 2 16 4 1 64
说明/提示
对于第一个测试用例,你可以交换任意两个元素,因此可以得到排序后的数组。
对于第二个测试用例,你可以交换 2 和 1(它们的 XOR 为 3),7 和 5(它们的 XOR 为 2),以及 7 和 6(它们的 XOR 为 1),从而得到字典序最小的数组。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?