CF1944B.Equal XOR

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Equal XOR

题目描述

给定一个长度为 2n2n 的数组 aa,其中每个整数 11nn 恰好出现两次。

同时给定一个整数 kk1kn21 \leq k \leq \lfloor \frac{n}{2} \rfloor)。

你需要找到两个长度均为 2k2k 的数组 llrr,使得:

  • ll[a1,a2,,an][a_1, a_2, \ldots, a_n] 的一个子集 ^\dagger
  • rr[an+1,an+2,,a2n][a_{n+1}, a_{n+2}, \ldots, a_{2n}] 的一个子集;
  • ll 中所有元素的按位异或等于 rr 中所有元素的按位异或,即 $l_1 \oplus l_2 \oplus \ldots \oplus l_{2k} = r_1 \oplus r_2 \oplus \ldots \oplus r_{2k}$。

可以证明,至少存在一组 llrr 满足条件。如果有多组解,你可以输出任意一组。

^\dagger 如果一个序列 xx 可以通过从序列 yy 中删除若干(可以为零或全部)元素,并重新排列剩余元素得到,则称 xxyy 的一个子集。例如,[3,1,2,1][3,1,2,1][1,2,3][1,2,3][1,1][1,1][3,2][3,2] 都是 [1,1,2,3][1,1,2,3] 的子集,但 [4][4][2,2][2,2] 不是 [1,1,2,3][1,1,2,3] 的子集。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt1t50001 \leq t \leq 5000),表示测试用例的数量。接下来是每组测试用例的描述。

每组测试用例的第一行包含两个整数 nnkk2n51042 \leq n \leq 5 \cdot 10^41kn21 \leq k \leq \lfloor \frac{n}{2} \rfloor)。

第二行包含 2n2n 个整数 a1,a2,,a2na_1, a_2, \ldots, a_{2n}1ain1 \leq a_i \leq n)。保证 aa 中每个 11nn 的整数恰好出现两次。

保证所有测试用例中 nn 的总和不超过 51045 \cdot 10^4

输出格式

对于每组测试用例,输出两行。

第一行输出 2k2k 个整数 l1,l2,,l2kl_1, l_2, \ldots, l_{2k}

第二行输出 2k2k 个整数 r1,r2,,r2kr_1, r_2, \ldots, r_{2k}

如果有多组解,你可以输出任意一组。

说明/提示

在第一个测试用例中,我们选择 l=[2,1]l=[2,1]r=[2,1]r=[2,1][2,1][2,1][a1,a2][a_1, a_2] 的一个子集,[2,1][2,1][a3,a4][a_3, a_4] 的一个子集,且 21=21=32 \oplus 1 = 2 \oplus 1 = 3

在第二个测试用例中,64=13=26 \oplus 4 = 1 \oplus 3 = 2

由 ChatGPT 4.1 翻译

样例

4
2 1
1 2 2 1
6 1
6 4 2 1 2 3 1 6 3 5 5 4
4 1
1 2 3 4 1 2 3 4
6 2
5 1 3 3 5 1 2 6 4 6 4 2
2 1
2 1
6 4
1 3
1 2
1 2
5 1 3 3
6 4 2 4

在线编程 IDE

建议全屏模式获得最佳体验