#P13845. [codefestival2017 qualb]101 to 010

[codefestival2017 qualb]101 to 010

题目描述

NN 个格子排成一行。有些格子可能含有一个“令牌”。你会得到一个只由 01 组成的字符串 ss,如果 ss 的第 ii 个字符为 1,则从左起第 ii 个格子里有一个令牌,否则没有。

“すぬけ君”想要尽可能多地进行以下操作:每次选择连续的三个格子,记作从左到右的 X,Y,ZX, Y, Z。进行操作的条件是 XXZZ 都有令牌,YY 不能有令牌。然后移除 XXZZ 的这两个令牌,在 YY 上放一个新令牌。

按照最优策略,すぬけ君最多可以进行多少次这种操作?

输入格式

输入通过标准输入给出,格式如下:

N sN\ s

输出格式

输出操作的最大次数。

输入输出样例 #1

输入 #1

7
1010101

输出 #1

2

输入输出样例 #2

输入 #2

50
10101000010011011110001001111110000101010111100110

输出 #2

10

说明/提示

限制

  • 1N500, ⁣0001 \leq N \leq 500,\!000
  • s=N|s| = N
  • ss 的每个字符都是 01

样例解释 1

例如,可以按以下方法进行两次操作:

  • 首先对最后三个格子操作。字符串变为 1010010
  • 然后对最左边的三个格子操作。字符串变为 0100010

注意操作的顺序很重要,例如如果先对中间三个格子操作,以后就无法再操作了。