AT_agc019_d [AGC019D] Shift and Flip
题目描述
有两个长度相同、仅由 $0$ 和 $1$ 组成的字符串 $A = A_1A_2...A_n$ 和 $B = B_1B_2...B_n$。
你可以对 $A$ 进行如下操作,次数不限且顺序任意:
- 将 $A$ 向左循环移位一位(即将 $A=A_1A_2...A_n$ 变为 $A_2A_3...A_nA_1$)。
- 将 $A$ 向右循环移位一位(即将 $A=A_1A_2...A_n$ 变为 $A_nA_1A_2...A_{n-1}$)。
- 任意选择一个 $B_i=1$ 的位置 $i$,将 $A_i$ 反转(即令 $A_i=1-A_i$)。
你的目标是使字符串 $A$ 和 $B$ 完全相同。
请输出使 $A$ 和 $B$ 相同所需的最小操作次数。如果无法做到,请输出 $-1$。
输入格式
输入以以下格式从标准输入读入:
> $A$ $B$
输出格式
输出使字符串 $A$ 和 $B$ 完全相同所需的最小操作次数。如果无法实现,请输出 $-1$。
说明/提示
### 限制条件
- $1 \leq |A|=|B| \leq 2{,}000$
- $A,B$ 仅包含 $0$ 和 $1$。
### 样例解释 1
以下是一种实现目标的最短操作序列:
- 反转 $A_1$:$A = 0010$
- 左移一次:$A = 0100$
- 再次反转 $A_1$:$A = 1100$
### 样例解释 2
没有办法反转 $A$ 的唯一一个比特。
### 样例解释 3
以下是一种实现目标的最短操作序列:
- 右移一次:$A = 01101$
- 反转 $A_5$:$A = 01100$
- 左移一次:$A = 11000$
- 再次左移一次:$A = 10001$
### 样例解释 4
只需按任意顺序依次反转 $A_1$、$A_3$、$A_4$、$A_6$、$A_7$ 即可。
由 ChatGPT 5 翻译