CF1977D.XORificator

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个仅包含 00 和 11 的 n×mn \times m 二进制矩阵。你还拥有一个“异或器”,可以用它对选定的某一行进行翻转(即将该行的 00 变为 11,11 变为 00)。

如果某一列恰好包含一个 11,则称该列为“特殊列”。你的任务是,找出最多能同时让多少列成为特殊列,并给出应对哪些行使用异或器的方案。

输入格式

每个测试点包含多个测试用例。输入的第一行为一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行为两个整数 nn 和 mm(1≤n,m≤3×1051 \leq n, m \leq 3 \times 10^5,n⋅m≤3×105n \cdot m \leq 3 \times 10^5)。

接下来的 nn 行,每行包含一个长度为 mm 的二进制字符串,表示矩阵的一行。

保证所有测试用例中 n⋅mn \cdot m 的总和不超过 3×1053 \times 10^5。

输出格式

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

第一行输出最多能同时成为特殊列的列数。

第二行输出一个长度为 nn 的二进制字符串,第 ii 个字符为 00 表示不对第 ii 行使用异或器,为 11 表示对第 ii 行使用异或器。

如果存在多种异或器使用方案都能达到最优答案,可以输出任意一种。

输入输出样例

  • 输入#1

    5
    3 4
    1010
    0110
    0100
    1 1
    1
    1 1
    0
    2 5
    00101
    10110
    3 3
    101
    111
    000

    输出#1

    3
    010
    1
    0
    1
    1
    3
    00
    2
    010

说明/提示

在第一个测试用例中,可以对第二行使用异或器,使得第 22、33、44 列成为特殊列。

在第二个测试用例中,唯一的列已经是特殊列,因此无需使用异或器。

由 ChatGPT 4.1 翻译

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

首页