#ATarc155e. [ARC155E] Split and Square
[ARC155E] Split and Square
题目描述
对于由非负整数组成的集合 ,我们定义 为:所有可以表示为 中两个整数(可以是相同的整数)按位异或()得到的非负整数组成的集合。例如,当 时,。
给定一个包含 个小于 的非负整数组成的集合 。
你可以进行如下操作任意次:
- 将 分成两个集合 和 (允许 或 为空集)。然后,用 与 的并集替换 。
请你求出将 变为 所需的最小操作次数。
按位异或()运算的定义如下:对于非负整数 、, 的二进制表示中,每一位 ()上的数,如果 和 在该位上只有一个为 ,则该位为 ,否则为 。
例如,(二进制表示为 )。 一般地, 个非负整数 的按位异或定义为 $(\dots((p\_1\oplus p\_2)\oplus p\_3)\oplus\dots\oplus p\_k)$,并且可以证明其结果与顺序无关。
输入格式
输入通过标准输入给出,格式如下:
输出格式
请输出答案。
样例 1
输入
4 2
00
01
10
11
输出
2
样例 2
输入
1 8
10011011
输出
1
样例 3
输入
1 2
00
输出
0
样例 4
输入
20 20
10011011111101101111
10100111100001111100
10100111100110001111
10011011100011011111
11001000001110011010
10100111111011000101
11110100001001110010
10011011100010111001
11110100001000011010
01010011101011010011
11110100010000111100
01010011101101101111
10011011100010110111
01101111101110001110
00111100000101111010
01010011101111010100
10011011100010110100
01010011110010010011
10100111111111000001
10100111111000010101
输出
10
说明/提示
限制条件
- 互不相同
- 每个 都以恰好 位的二进制形式给出(如果 的二进制位数不足 ,则会补前导零)
- 所有输入均为整数
样例解释 1
第一次操作时,将 ,,则 ,,因此 被替换为 。第二次操作时,将 ,,则 。无法在少于 次操作内将 变为 ,所以答案为 。
样例解释 2
第一次操作时,将 ,,则 变为 。操作时允许 或 为空集。
样例解释 3
初始时 ,无需进行任何操作。
由 ChatGPT 4.1 翻译