#arc156a. [arc156_a]Non-Adjacent Flip
[arc156_a]Non-Adjacent Flip
题目描述
我们有 枚编号为 到 的硬币,硬币有两个可区分的面。字符串 表示硬币的当前状态。如果 的第 个字符是 1
,则表示第 枚硬币正面朝上;如果该字符是 0
,则表示第 枚硬币反面朝上。
你可以重复执行以下操作零次或多次:
- 选择一对整数 ,满足 且 。翻转第 枚硬币和第 枚硬币。
确定是否可以使所有 枚硬币都反面朝上。如果可能,找到所需操作的最小次数。
给定 个测试用例进行求解。
约束条件
- 是长度为 的字符串,由
0
和1
组成。 - 输入中的所有值均为整数。
- 对于每个输入文件,测试用例的 的总和不超过 。
输入
输入以以下格式从标准输入读取:
每个测试用例的格式如下:
输出
输出 行。第 行 应包含如果可能的话使所有硬币反面朝上所需的最小操作次数,否则输出 -1
。
示例输入 1
5
3
101
6
101101
5
11111
6
000000
30
111011100110101100101000000111
示例输出 1
1
2
-1
0
8
对于第一个测试用例,你可以执行操作 ,在一次操作中将所有硬币都翻转成反面朝上。
对于第二个测试用例,你可以先执行操作 ,然后再执行操作 ,在两次操作中将所有硬币都翻转成反面朝上。
对于第三个测试用例,你可以证明无法通过任何操作将所有硬币都翻转成反面朝上,因此应输出 -1
。
对于第四个测试用例,硬币已经是反面朝上的状态,所以不需要进行任何操作。