AT_arc109_f [ARC109F] 1D Kingdom Builder
题目描述
[problemUrl]: https://atcoder.jp/contests/arc109/tasks/arc109_f
Snuke 君正在玩一个由无限个格子组成的单行棋盘游戏。每个格子都有一个整数编号,对于任意整数 $i$,格子 $i$ 和格子 $i+1$ 都是相邻的。此外,每个格子要么是白色,要么是黑色。
棋盘上格子的颜色由一个长度为 $n$ 的字符串 $s$(仅包含字符 `w` 和 `b`)表示,具体规则如下:
- 对于每个 $i = 1, 2, \dots, n$,如果 $s$ 的第 $i$ 个字符为 `w`,则格子 $i$ 为白色;若为 `b`,则为黑色。
- 当 $i \leq 0$ 时,格子 $i$ 均为白色。
- 当 $i > n$ 时,格子 $i$ 均为黑色。
Snuke 君有无限多的白色棋子和黑色棋子。他会按照以下步骤将棋子逐一放置到棋盘上:
- (1) 选择任意颜色的棋子(白色或黑色)。
- (2) 在棋盘上寻找与已经放置的棋子相邻的、且与所选棋子颜色相同的空格子。
- (2a) 如果存在满足条件的格子,选一个格子并将棋子放置在上面。
- (2b) 如果不存在满足条件的格子,则从棋盘上所有与所选棋子颜色相同的空格子中任选一个,将棋子放置在上面。
最开始,棋盘上没有任何棋子。
现给出一个长度为 $n$ 的字符串 $t$(仅包含字符 `o` 和 `_`)。为了在所有满足条件($t$ 中字符为 `o`)的格子上都放置一个棋子,至少需要放置多少个棋子?
(保证字符串 $t$ 中至少含有一个 `o`。)
输入格式
输入从标准输入给出,格式如下:
> $n$
> $s$
> $t$
输出格式
输出一个整数,表示 Snuke 君需要放置的最少棋子数量。
说明/提示
### 限制条件
- $1 \leq n \leq 10^5$
- $|s| = |t| = n$
- 字符串 $s$ 仅由 `w` 和 `b` 组成
- 字符串 $t$ 仅由 `o` 和 `_` 组成,且至少含有一个 `o`
### 样例解释 1
用 `W` 和 `B` 分别表示必须放置棋子的白格和黑格,用 `w` 和 `b` 表示不必放置棋子的白格和黑格,则棋盘情况如下:`...wwwwwwWbBbbbbb...`。按照以下顺序放置棋子,仅需 $2$ 次即可满足要求:
```
...wwwwwwWbBbbbbb...
2 1
```
注意,如果先在白格放置棋子,则至少需要 $3$ 次:
```
...wwwwwwWbBbbbbb...
123
```
### 样例解释 2
按照以下顺序放置棋子,需要 $3$ 次即可满足要求:
```
...wwwwwWwwWbbbbb...
1 32
```
### 样例解释 3
按照以下顺序放置棋子,需要 $5$ 次即可满足要求:
```
...wwwwwbBwBwBwBbbbbbb...
12 3 4 5
```
翻译由 ChatGPT-4.5 完成。