CFCF2181M.Medical Parity

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

护士米拉在一家过敏门诊工作。对每一位病人,米拉都按照固定顺序测试 nn 种过敏原。测试结果会被记录为一个长度为 nn 的二进制字符串 xx :对于每一种过敏原,1 表示出现阳性反应,0 表示未出现反应。

为了分析反应的分布情况,米拉还会为 xx 记录一个奇偶校验控制字符串。对于一个长度为 nn 的二进制字符串 xx,其奇偶校验控制字符串 yy 的定义如下:对于每一个位置 ii1in1 \le i \le n),令 cic_i 表示 xx 的前 ii 个字符(包括第 ii 个位置)中等于 1 的字符个数。奇偶校验控制字符串 yy 是一个长度为 nn 的二进制字符串,使得对于所有的 ii1in1 \le i \le n),都有 yi=cimod2y_i = c_i \bmod 2。换句话说,如果 cic_i 是奇数则 yiy_i 为 1,若为偶数则为 0。例如,若 x=11101x=11101,则 y=10110y=10110

不幸的是,在记录数据时,测试结果字符串和校验字符串中的某些位可能被错误地记录。对于某个病人,米拉后来在系统中发现两个长度均为 nn 的二进制字符串 xx'yy'。它们原本应当分别是某个真实测试结果字符串 xx 以及其奇偶校验控制字符串 yy,但在记录的过程中,xxyy 的某些位可能被翻转了。例如,在上面的例子中,仅 yy 的第 3 位被翻转,得到了 x=11101x'=11101y=10010y'=10010

一次翻转操作是指选择两个字符串中的任意一位,将该位置的比特翻转(0 变为 1,1 变为 0)。米拉想要知道,记录这些数据时,可能发生的最少比特翻转次数是多少。

形式化地,给定两个长度为 nn 的二进制字符串 xx'yy'。你需要通过翻转 xx'yy' 中的某些比特,将其变为 xxyy,使得 yyxx 的奇偶校验控制字符串。请计算可能发生的最小总比特翻转次数。

输入格式

输入第一行包含一个整数 tt,表示测试用例的数量。接下来的 2t2t 行,每两行为一个测试用例。每个测试用例的第一行是一个由 0 和 1 组成的非空二进制字符串 xx'。接下来一行是与 xx' 长度相同的二进制字符串 yy'

所有输入中所有 xx' 字符串的总长度不超过 10610^6

输出格式

输出 tt 行,每行一个整数,表示每个测试用例可能发生的最小比特翻转次数。

输入输出样例

  • 输入#1

    3
    11101
    10110
    11101
    10010
    01100
    10110

    输出#1

    0
    1
    2
首页