CFCF2181M.Medical Parity
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
护士米拉在一家过敏门诊工作。对每一位病人,米拉都按照固定顺序测试 n 种过敏原。测试结果会被记录为一个长度为 n 的二进制字符串 x :对于每一种过敏原,1 表示出现阳性反应,0 表示未出现反应。
为了分析反应的分布情况,米拉还会为 x 记录一个奇偶校验控制字符串。对于一个长度为 n 的二进制字符串 x,其奇偶校验控制字符串 y 的定义如下:对于每一个位置 i(1≤i≤n),令 ci 表示 x 的前 i 个字符(包括第 i 个位置)中等于 1 的字符个数。奇偶校验控制字符串 y 是一个长度为 n 的二进制字符串,使得对于所有的 i(1≤i≤n),都有 yi=cimod2。换句话说,如果 ci 是奇数则 yi 为 1,若为偶数则为 0。例如,若 x=11101,则 y=10110。
不幸的是,在记录数据时,测试结果字符串和校验字符串中的某些位可能被错误地记录。对于某个病人,米拉后来在系统中发现两个长度均为 n 的二进制字符串 x′ 和 y′。它们原本应当分别是某个真实测试结果字符串 x 以及其奇偶校验控制字符串 y,但在记录的过程中,x 和 y 的某些位可能被翻转了。例如,在上面的例子中,仅 y 的第 3 位被翻转,得到了 x′=11101、y′=10010。
一次翻转操作是指选择两个字符串中的任意一位,将该位置的比特翻转(0 变为 1,1 变为 0)。米拉想要知道,记录这些数据时,可能发生的最少比特翻转次数是多少。
形式化地,给定两个长度为 n 的二进制字符串 x′ 和 y′。你需要通过翻转 x′ 和 y′ 中的某些比特,将其变为 x 和 y,使得 y 是 x 的奇偶校验控制字符串。请计算可能发生的最小总比特翻转次数。
输入格式
输入第一行包含一个整数 t,表示测试用例的数量。接下来的 2t 行,每两行为一个测试用例。每个测试用例的第一行是一个由 0 和 1 组成的非空二进制字符串 x′。接下来一行是与 x′ 长度相同的二进制字符串 y′。
所有输入中所有 x′ 字符串的总长度不超过 106。
输出格式
输出 t 行,每行一个整数,表示每个测试用例可能发生的最小比特翻转次数。
输入输出样例
输入#1
3 11101 10110 11101 10010 01100 10110
输出#1
0 1 2