AT_arc155_e.[ARC155E] Split and Square

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

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

题目描述

对于由非负整数组成的集合 XX,我们定义 f(X)f(X) 为:所有可以表示为 XX 中两个整数(可以是相同的整数)按位异或(XOR\mathrm{XOR})得到的非负整数组成的集合。例如,当 X={1, 2, 4}X=\lbrace 1,\ 2,\ 4\rbrace 时,f(X)={0, 3, 5, 6}f(X)=\lbrace 0,\ 3,\ 5,\ 6\rbrace。

给定一个包含 NN 个小于 2M2^M 的非负整数组成的集合 S={A1, A2, …, AN}S=\lbrace A_1,\ A_2,\ \dots,\ A_N\rbrace。

你可以进行如下操作任意次:

  • 将 SS 分成两个集合 T1T_1 和 T2T_2(允许 T1T_1 或 T2T_2 为空集)。然后,用 f(T1)f(T_1) 与 f(T2)f(T_2) 的并集替换 SS。

请你求出将 SS 变为 {0}\lbrace 0\rbrace 所需的最小操作次数。

按位异或(XOR\mathrm{XOR})运算的定义如下:对于非负整数 AA、BB,A⊕BA\oplus B 的二进制表示中,每一位 2k2^k(k≥0k\geq 0)上的数,如果 AA 和 BB 在该位上只有一个为 11,则该位为 11,否则为 00。

例如,3⊕5=63\oplus 5=6(二进制表示为 011⊕101=110011\oplus 101=110)。
一般地,kk 个非负整数 p1,p2,p3,…,pkp_1,p_2,p_3,\dots,p_k 的按位异或定义为 (…((p1⊕p2)⊕p3)⊕⋯⊕pk)(\dots((p_1\oplus p_2)\oplus p_3)\oplus\dots\oplus p_k),并且可以证明其结果与顺序无关。

输入格式

输入通过标准输入给出,格式如下:

NN MM
A1A_1
A2A_2
⋮\vdots
ANA_N

输出格式

请输出答案。

输入输出样例

  • 输入#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≤3001\leq N\leq 300
  • 1≤M≤3001\leq M\leq 300
  • 0≤Ai<2M0\leq A_i<2^M
  • Ai (1≤i≤N)A_i\ (1\leq i\leq N) 互不相同
  • 每个 AiA_i 都以恰好 MM 位的二进制形式给出(如果 AiA_i 的二进制位数不足 MM,则会补前导零)
  • 所有输入均为整数

样例解释 1

第一次操作时,将 T1={0,1}T_1=\lbrace 0,1\rbrace,T2={2,3}T_2=\lbrace 2,3\rbrace,则 f(T1)={0,1}f(T_1)=\lbrace 0,1\rbrace,f(T2)={0,1}f(T_2)=\lbrace 0,1\rbrace,因此 SS 被替换为 {0,1}\lbrace 0,1\rbrace。第二次操作时,将 T1={0}T_1=\lbrace 0\rbrace,T2={1}T_2=\lbrace 1\rbrace,则 S={0}S=\lbrace 0\rbrace。无法在少于 22 次操作内将 SS 变为 {0}\lbrace 0\rbrace,所以答案为 22。

样例解释 2

第一次操作时,将 T1={155}T_1=\lbrace 155\rbrace,T2={}T_2=\lbrace\rbrace,则 SS 变为 {0}\lbrace 0\rbrace。操作时允许 T1T_1 或 T2T_2 为空集。

样例解释 3

初始时 S={0}S=\lbrace 0\rbrace,无需进行任何操作。

由 ChatGPT 4.1 翻译

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

首页