AT_arc216_a [ARC216A] Reversi 3
题目描述
给定长度为 $N$ 的字符串 $A$ 和 $B$,它们仅包含字符 `0` 和 `1`。记 $A_i$ 表示字符串 $A$ 的第 $i$ 个字符。
你可以进行以下操作任意次(也可以不操作)。
- 选择一个整数 $i\ (2 \leq i \leq N-1)$,满足 $A_{i-1} = A_{i+1}$,然后翻转 $A_i$(将 `1` 变为 `0` 或将 `0` 变为 `1`)。
请判断是否可以通过若干次操作将 $A$ 变为 $B$,如果可以,求出所需操作的最小次数。
共有 $T$ 组测试数据,请对每一组数据分别求解。
输入格式
从标准输入读取,格式如下:
> $T$
> $\mathrm{case}_1$
> $\mathrm{case}_2$
> $\vdots$
> $\mathrm{case}_T$
每组测试数据格式为:
> $N$
> $A$
> $B$
输出格式
对每组测试数据,按顺序输出答案。
如果无法将 $A$ 变为 $B$,输出 `-1`。
如果可以,输出所需操作的最小次数。
说明/提示
### 样例解释 1
对于第一组测试数据,可以通过两次操作将 $A$ 变为 $B$,如下:
1. 选择 $i = 2$,$A$ 变为 `0101`。
2. 选择 $i = 3$,$A$ 变为 `0111`。
对于第二组测试数据,无论进行多少次操作,都无法将 $A$ 变为 $B$。
### 数据范围
- $1 \leq T \leq 2 \times 10^5$
- $3 \leq N \leq 10^6$
- $A$ 和 $B$ 均为长度为 $N$ 的只包含 `0` 和 `1` 的字符串。
- $T$ 和 $N$ 均为整数。
- 所有测试数据中 $N$ 的总和不超过 $10^6$。
由 ChatGPT 5 翻译