#CF2131F. 不公正的二进制生活
不公正的二进制生活
F. 不公正的二进制生活
每次测试的时间限制: 秒
每次测试的内存限制: 兆字节
Yuri 有两个长度为 的二进制字符串 和 。这两个字符串动态地定义一个 的网格。记 为第 行第 列的格子。格子 的初始值为 ,其中 表示按位异或运算。
Yuri 的旅程总是从格子 开始。从一个格子 ,她只能向下走到 或向右走到 。如果存在一条合法路径,使得路径上的所有格子(包括 )的值都为 ,则称该旅程是可行的。
在出发之前,她可以任意多次执行以下操作:
- 选择一个下标 ,翻转 或 的值( 变成 , 变成 )。网格也会相应改变。
设 表示 Yuri 能够走到格子 所需的最少操作次数。你需要求所有 的 之和。
注意,这 种情况是独立的,也就是说在每种情况下你需要假设网格处于初始状态(即并没有实际执行任何操作)。
输入
每个测试包含多个测试用例。第一行包含一个整数 ()——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 ()。
第二行包含一个二进制字符串 (,)。
第三行包含一个二进制字符串 (,)。
保证所有测试用例的 之和不超过 。
输出
对于每个测试用例,输出一个整数——所有格子最小操作次数之和。
示例
输入
3
2
11
00
2
01
01
4
1010
1101
输出
5
4
24
说明
在第一个测试用例中, 的网格如下所示:
1 1
1 1
初始状态下,Yuri 无法到达任何格子。
Yuri 可以翻转 ,使得网格变为:
0 0
1 1
此时 Yuri 可以到达格子 和 。
另一方面,Yuri 可以翻转 ,使得网格变为:
0 1
0 1
此时 Yuri 可以到达格子 和 。
要到达格子 ,可以证明至少需要两次操作。例如,她可以同时翻转 和 ,使得网格变为:
0 0
0 0
因此答案为 。