[ARC132D] Between Two Binary Strings
题意翻译
设一个 01 串的美丽值为相同的相邻数字个数。举个例子,`00011` 的美丽值为 3,而 `10101` 的美丽值为 0。
设两个长度相同,且 0 的个数相同的 01 串 $s_1,s_2$ 之间的距离 $dis(s_1,s_2)$ 为仅能交换相邻字符,使得 $s_1$ 变成 $s_2$ 的最小交换次数。
如果一个字符串 $s_3$ 满足它在 $s_1,s_2$ 中间,则需要 $dis(s_1,s_2)=dis(s_1,s_3)+dis(s_3,s_2)$。
现在,给定两个长度为 $n+m$ 的,有 $n$ 个 0 的字符串 $s,t$,请求出所有 $s,t$ 中间的字符串中,最大的美丽值。
$2\le n+m\le 3\times 10^5$。
题目描述
[problemUrl]: https://atcoder.jp/contests/arc132/tasks/arc132_d
文字列の **美しさ** を、その文字列のなかで同じ $ 2 $ 文字が隣り合っている位置の個数として定義します。 例えば、`00011` の美しさは $ 3 $ で、`10101` の美しさは $ 0 $ です。
$ S_{n,m} $ を $ n $ 文字の `0` と $ m $ 文字の `1` からなる長さ $ n+m $ の文字列全体の集合とします。
$ s_1,s_2\ \in\ S_{n,m} $ について、$ s_1,s_2 $ の **距離** $ d(s_1,s_2) $ を 「隣り合った $ 2 $ 文字を入れ替える操作によって文字列 $ s_1 $ を文字列 $ s_2 $ に並び替えるのに必要な最小の操作回数」 と定義します。
また、$ s_1,s_2,s_3\in\ S_{n,m} $ について、$ s_2 $ が $ s_1 $ と $ s_3 $ の **間にある** ことを、$ d(s_1,s_3)=d(s_1,s_2)+d(s_2,s_3) $ で定義します。
$ s,t\in\ S_{n,m} $ が与えられるので、$ s $ と $ t $ の間にある文字列の美しさの最大値を出力してください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ n $ $ m $ $ s $ $ t $
输出格式
$ s $ と $ t $ の間にある文字列の美しさの最大値を出力せよ。
输入输出样例
输入样例 #1
2 3
10110
01101
输出样例 #1
2
输入样例 #2
4 2
000011
110000
输出样例 #2
4
输入样例 #3
12 26
01110111101110111101001101111010110110
10011110111011011001111011111101001110
输出样例 #3
22
说明
### 制約
- $ 2\ \le\ n\ +\ m\le\ 3\times\ 10^5 $
- $ 0\ \le\ n,m $
- $ s,t $ は $ n $ 文字の `0` と $ m $ 文字の `1` からなる長さ $ n+m $ の文字列
### Sample Explanation 1
`10110` と `01101` の距離は $ 2 $ で、これらの間にある文字列は、`10110`, `01110`, `01101`, `10101` です。 それぞれの美しさは $ 1,2,1,0 $ であるため、答えは $ 2 $ です。
### Sample Explanation 2
`000011` と `110000` の距離は $ 8 $ です。 美しさが最大になる文字列は `000011` と `110000` で、答えは $ 4 $ です。