#53. 01串

01串

当前没有测试数据。

题目背景

chh在某码源的周赛做题时,被某题恶心到了

不能只有我被恶心!

于是,你即将被恶心

题目描述

给定一个长度为 nn 的二进制字符串 SS。字符串中的每个字符均为 00 或 11。 你可以进行若干次操作。每次操作按以下步骤进行: 选择并删除当前字符串最左端或最右端的一个字符; 如果被删除的字符是 11,则将剩余字符串中的所有字符翻转,即把每个 00 变为 11,把每个 11 变为 00;如果被删除的字符是 00,则不进行翻转。 你可以随时停止操作。请问,至少需要进行多少次操作,才能使剩余字符串中的所有字符均为 00? 特别地,空字符串也视为满足条件。如果初始字符串中的所有字符均为 00,则可以不进行任何操作。 格式

输入格式

第一行包含一个整数 nn,表示字符串 SS 的长度。 第二行包含一个长度为 nn 的二进制字符串 SS。 输出格式

输出一行,包含一个整数,表示使剩余字符串中的所有字符均为 00 所需的最少操作次数。 样例

3
110
2

样例解释 #1

先删除最右端的 00,此时字符串变为 1111;再删除最左端的 11,并将剩余的 11 翻转为 00。两次操作后,剩余字符串为 00。 进行至多一次操作无法使剩余字符串中的所有字符均为 00,因此答案为 22。

3
101
3

样例解释 #2

无论前两次操作分别删除哪一端的字符,操作后剩余的唯一字符都是 $$,因此至少需要三次操作。删除全部字符后得到空字符串,满足条件。 数据规模

100% 的数据,满足 1≤n≤2000001≤n≤200000,SS 的长度为 nn,且 SS 中的每个字符均为 00 或 11。