农夫约翰( � � FJ)的 � N头 ( 1 ≤ � ≤ 3 ⋅ 1 0 5 ) (1≤N≤3⋅10 5 )奶牛排成一行。不幸的是,疾病正在这些奶牛中传播。 有些奶牛初始就已经被感染了。每天晚上,都会有一头被感染的奶牛把疾病传播给它左右两边的奶牛(如果它们存在的话)。一旦一头奶牛被感染,她就会持续处于感染状态。 在经过了一段时间后,农夫约翰意识到问题已经无法控制了, 所以他对他的奶牛进行检测来确定哪些奶牛感染了这种疾病。找出最初感染这种疾病的奶牛数量的最小值。 【输入格式】 第一行包含一个整数 � N,表示农夫约翰拥有的奶牛数量。
第二行包含一个长度为 � N的字符串,这个字符串只包含 1 1和 0 0,用来表示若干个晚上后每头奶牛的感染状态,其中 1 1表示被感染了, 0 0表示没有被感染。 【输出格式】 输出一个整数:最初感染这种疾病的奶牛数量的最小值。 【输入输出样例#1】 输入#1 复制 5 11111 输出#1 复制 1 【输入输出样例#2】 输入#2 复制 6 011101 输出#2 复制 4 【说明提示】 样例#1解释:
假设中间那头是唯一初始就被感染的。然后每天晚上奶牛们会按以下顺序被依次感染:
第 0 0天晚上: 00100 00100 (第三头奶牛初始就已经被感染) 第 1 1天晚上: -> 01110 01110 (现在第二头和第四头奶牛也被感染) 第 2 2天晚上: -> 11111 11111 (现在第一头和第五头奶牛也被感染) 第 3 3天晚上: -> 11111 11111 (所有奶牛都已被感染,所以没有额外新增的奶牛被感染) -> ... 两个或更多个晚上后, 最终状态看起来像输入那样。还有许多其他初始状态和天数可以产生此输入状态,例如:
第 0 0天晚上: 10001 10001 第 1 1天晚上: -> 11011 11011 第 2 2天晚上: -> 11111 11111
或:
第 0 0天晚上: 01001 01001 第 1 1天晚上: -> 11111 11111
或:
第 0 0天晚上: 01000 01000 第 1 1天晚上: -> 11100 11100 第 2 2天晚上: -> 11110 11110 第 3 3天晚上: -> 11111 11111 所有这些初始状态都至少包含一头被感染的奶牛。
样例#2解释:
唯一可能导致最终状态的初始状态和天数是:没有经过任何夜晚,并且输入中四头被感染的奶牛初始就已经被感染。 【数据范围】
测试点 3 − 7 3−7 满足 : : � ≤ 1000 N≤1000。
测试点 8 − 12 8−12 没有额外限制。