CF1566C.MAX-MEX Cut

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

MAX-MEX Cut

题目描述

一个二进制字符串是只包含字符 0011 的字符串。一个“二表”是一个有且仅有两行、长度相等且每行都是二进制字符串的表格。

定义“二表”的 MEX\operatorname{MEX}001122 中未在该二表中出现的最小数字。例如,[00111010]\begin{bmatrix} 0011\\ 1010 \end{bmatrix}MEX\operatorname{MEX}22,因为 0011 都至少出现过一次。[111111]\begin{bmatrix} 111\\ 111 \end{bmatrix}MEX\operatorname{MEX}00,因为 0022 都没有出现,且 0<20 < 2

现在给定一个有 nn 列的二表。你可以将其切分成若干个二表(每个由若干连续的列组成),要求每一列恰好属于一个二表。你也可以选择不切分,即整个二表作为一个整体。

请问,经过最优切分后,所有得到的二表的 MEX\operatorname{MEX} 之和最大是多少?

输入格式

输入包含多组测试数据。第一行包含一个整数 tt1t1041 \le t \le 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn1n1051 \le n \le 10^5),表示二表的列数。

接下来的两行,每行一个长度为 nn 的二进制字符串,表示二表的两行。

保证所有测试用例中 nn 的总和不超过 10510^5

输出格式

对于每个测试用例,输出一个整数,表示经过最优切分后所有二表的 MEX\operatorname{MEX} 之和的最大值。

说明/提示

在第一个测试用例中,可以按如下方式切分二表:

  • [01]\begin{bmatrix} 0\\ 1 \end{bmatrix},其 MEX\operatorname{MEX}22
  • [1010]\begin{bmatrix} 10\\ 10 \end{bmatrix},其 MEX\operatorname{MEX}22
  • [11]\begin{bmatrix} 1\\ 1 \end{bmatrix},其 MEX\operatorname{MEX}00
  • [01]\begin{bmatrix} 0\\ 1 \end{bmatrix},其 MEX\operatorname{MEX}22
  • [00]\begin{bmatrix} 0\\ 0 \end{bmatrix},其 MEX\operatorname{MEX}11
  • [00]\begin{bmatrix} 0\\ 0 \end{bmatrix},其 MEX\operatorname{MEX}11

MEX\operatorname{MEX} 之和为 88

由 ChatGPT 4.1 翻译

样例

4
7
0101000
1101100
5
01100
10101
2
01
01
6
000000
111111
8
8
2
12

在线编程 IDE

建议全屏模式获得最佳体验