CF1944B.Equal XOR

普及-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

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

同时给定一个整数 kk(1≤k≤⌊n2⌋1 \leq k \leq \lfloor \frac{n}{2} \rfloor)。

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

  • 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 中所有元素的按位异或,即 l1⊕l2⊕…⊕l2k=r1⊕r2⊕…⊕r2kl_1 \oplus l_2 \oplus \ldots \oplus l_{2k} = r_1 \oplus r_2 \oplus \ldots \oplus r_{2k}。

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

†^\dagger 如果一个序列 xx 可以通过从序列 yy 中删除若干(可以为零或全部)元素,并重新排列剩余元素得到,则称 xx 是 yy 的一个子集。例如,[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] 的子集。

输入格式

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

每组测试用例的第一行包含两个整数 nn 和 kk(2≤n≤5⋅1042 \leq n \leq 5 \cdot 10^4,1≤k≤⌊n2⌋1 \leq k \leq \lfloor \frac{n}{2} \rfloor)。

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

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

输出格式

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

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

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

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

输入输出样例

  • 输入#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

    输出#1

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

说明/提示

在第一个测试用例中,我们选择 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] 的一个子集,且 2⊕1=2⊕1=32 \oplus 1 = 2 \oplus 1 = 3。

在第二个测试用例中,6⊕4=1⊕3=26 \oplus 4 = 1 \oplus 3 = 2。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页