AT_arc155_e.[ARC155E] Split and Square
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
对于由非负整数组成的集合 X,我们定义 f(X) 为:所有可以表示为 X 中两个整数(可以是相同的整数)按位异或(XOR)得到的非负整数组成的集合。例如,当 X={1, 2, 4} 时,f(X)={0, 3, 5, 6}。
给定一个包含 N 个小于 2M 的非负整数组成的集合 S={A1, A2, …, AN}。
你可以进行如下操作任意次:
- 将 S 分成两个集合 T1 和 T2(允许 T1 或 T2 为空集)。然后,用 f(T1) 与 f(T2) 的并集替换 S。
请你求出将 S 变为 {0} 所需的最小操作次数。
按位异或(XOR)运算的定义如下:对于非负整数 A、B,A⊕B 的二进制表示中,每一位 2k(k≥0)上的数,如果 A 和 B 在该位上只有一个为 1,则该位为 1,否则为 0。
例如,3⊕5=6(二进制表示为 011⊕101=110)。
一般地,k 个非负整数 p1,p2,p3,…,pk 的按位异或定义为 (…((p1⊕p2)⊕p3)⊕⋯⊕pk),并且可以证明其结果与顺序无关。
输入格式
输入通过标准输入给出,格式如下:
N M
A1
A2
⋮
AN
输出格式
请输出答案。
输入输出样例
输入#1
4 2 00 01 10 11
输出#1
2
输入#2
1 8 10011011
输出#2
1
输入#3
1 2 00
输出#3
0
输入#4
20 20 10011011111101101111 10100111100001111100 10100111100110001111 10011011100011011111 11001000001110011010 10100111111011000101 11110100001001110010 10011011100010111001 11110100001000011010 01010011101011010011 11110100010000111100 01010011101101101111 10011011100010110111 01101111101110001110 00111100000101111010 01010011101111010100 10011011100010110100 01010011110010010011 10100111111111000001 10100111111000010101
输出#4
10
说明/提示
限制条件
- 1≤N≤300
- 1≤M≤300
- 0≤Ai<2M
- Ai (1≤i≤N) 互不相同
- 每个 Ai 都以恰好 M 位的二进制形式给出(如果 Ai 的二进制位数不足 M,则会补前导零)
- 所有输入均为整数
样例解释 1
第一次操作时,将 T1={0,1},T2={2,3},则 f(T1)={0,1},f(T2)={0,1},因此 S 被替换为 {0,1}。第二次操作时,将 T1={0},T2={1},则 S={0}。无法在少于 2 次操作内将 S 变为 {0},所以答案为 2。
样例解释 2
第一次操作时,将 T1={155},T2={},则 S 变为 {0}。操作时允许 T1 或 T2 为空集。
样例解释 3
初始时 S={0},无需进行任何操作。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?