#codefestival2015finalc. [codefestival_2015_final_c]寿司タワー
[codefestival_2015_final_c]寿司タワー
问题描述
寿司是一种将"酒"放在"物料"上面的食物。
Ringo想通过堆叠N个寿司来制作一个寿司塔。有N个寿司,意味着有N个酒和N个物料,总共有2N个部件,她希望按照某种顺序堆叠这些部件。
有以下三种方法来堆叠寿司:
- 直接堆叠:按照酒和物料的顺序堆叠。
- 翻转堆叠:按照物料和酒的顺序堆叠。
- 分解堆叠:将寿司分解成酒和物料,并将它们分别堆叠。
例如,如果要按照从下到上的顺序依次堆叠3个寿司为"物料、酒、物料、物料、酒、酒",可以按照以下方式进行堆叠:
- 分解一个寿司,堆叠物料。保留酒以便后续堆叠。
- 直接堆叠一个寿司。
- 翻转堆叠一个寿司。
- 堆叠保留的酒。
由于分解寿司是很麻烦的,Ringo希望尽可能减少分解的寿司数量。请计算为了制作目标的寿司塔所需的分解寿司的最小数量。
输入
输入以以下格式从标准输入中给出:
- 第1行包含一个整数,表示寿司的数量。
- 第2行包含由长度为的字符串表示的部件堆叠顺序。由N个
0
和N个1
组成的字符串,第个字符表示按照从下到上的顺序将酒堆叠在第i个位置是0
还是将物料堆叠在第i个位置是1
。
输出
输出一个整数,在一行中表示为了制作目标的寿司塔所需的最小分解寿司数量。在输出末尾要包含一个换行符。
输入示例1
3
101100
输出示例1
1
与问题描述中的例子相同。下图表示了堆叠方式的示例,白色圆表示酒,红色矩形表示物料。
输入示例2
5
0000111011
输出示例2
3
以上是问题的描述和示例。