AT_code_festival_2017_qualb_d 101 to 010
题目描述
有 $N$ 个格子排成一行。有些格子可能含有一个“令牌”。你会得到一个只由 `0` 和 `1` 组成的字符串 $s$,如果 $s$ 的第 $i$ 个字符为 `1`,则从左起第 $i$ 个格子里有一个令牌,否则没有。
“すぬけ君”想要尽可能多地进行以下操作:每次选择连续的三个格子,记作从左到右的 $X, Y, Z$。进行操作的条件是 $X$ 和 $Z$ 都有令牌,$Y$ 不能有令牌。然后移除 $X$ 和 $Z$ 的这两个令牌,在 $Y$ 上放一个新令牌。
按照最优策略,すぬけ君最多可以进行多少次这种操作?
输入格式
输入通过标准输入给出,格式如下:
> $N\ s$
输出格式
输出操作的最大次数。
说明/提示
### 限制
- $1 \leq N \leq 500,\!000$
- $|s| = N$
- $s$ 的每个字符都是 `0` 或 `1`。
### 样例解释 1
例如,可以按以下方法进行两次操作:
- 首先对最后三个格子操作。字符串变为 `1010010`。
- 然后对最左边的三个格子操作。字符串变为 `0100010`。
注意操作的顺序很重要,例如如果先对中间三个格子操作,以后就无法再操作了。
由 ChatGPT 5 翻译