#P10258. [COCI 2023/2024 #5] Bitovi
[COCI 2023/2024 #5] Bitovi
题目背景
译自 COCI 2023/2024 Contest #5 T2「Bitovi」
题目描述
哪个先出现,鸡还是蛋?作为一个百万富翁活上一百年好,还是贫穷中度过七天好?如何成为国际象棋大师?如何拉起百叶窗?如何通过期末考试?如何训练龙?这些都是一些有趣的问题,我们可以在竞赛结束后再去思考,但现在我们提出一个不那么有趣的计算机科学问题。
给定两组数集 和 ,大小均为 。每次操作,你可以从集合 中选择一个任意元素,并改变其二进制表示中的一个任意数位。结果数不能是改变前集合 中的元素。
例如,数字 的二进制是 。通过一次操作,它可以变成 、、 或 。
确定一系列操作,通过这些操作集合 变得和集合 相等。如果两个集合大小相同,并且集合 中没有不属于集合 的元素,则认为两个集合是相等的。
注意:操作的数量不必是最小的,但必须满足任务的限制。
输入格式
第一行包含一个整数 (),集合 和 的大小。
第二行包含 个不同的正整数 (),表示集合 的元素。
第二行包含 个不同的正整数 (),表示集合 的元素。
输出格式
第一行输出操作的数目,不超过 。
接下来若干行,每行输出 (),表示将集合 中的 修改为 。 和 在二进制位中只能有一位不同。并且,必须满足 ,。
3
0 1 2
1 2 3
2
1 3
0 1
3
4 8 31
0 4 8
5
31 30
30 28
28 24
24 16
16 0
5
0 1 2 4 5
7 6 5 3 2
9
1 3
3 7
0 1
1 0
2 6
0 2
7 3
5 7
4 5
提示
样例解释 1
如果我们先操作 ,再操作 ,两次操作间,集合 将有两个相同的元素,这是不被允许的。另一种可能的方案是 ,。
样例解释 2
。按照从最低有效位到最高有效位修改,依次可以得到 和 。在所有的操作后, 和 相同。
子任务
Subtask | Points | Constraints |
---|---|---|
1 | 10 | |
2 | 15 | |
3 | 30 | |
4 | 15 | 无额外限制 |