#P1350. [CZOJ 一周一测 R23 A] 01 串变换

[CZOJ 一周一测 R23 A] 01 串变换

题目描述

给定一个 01 字符串,你需要进行最少的操作使得这个串中只含有 11,对于一次操作,你可以选择这个串中的一个前缀中的每一个数翻转,即 11 变为 0000 变为 11

你需要求出这个最少操作次数。

特别的,若无法将字符串全部变为 11,则输出 -1

输入格式

一行一个字符串 ss

输出格式

一行一个正整数表示你的答案。

输入输出样例 #1

输入 #1

101

输出 #1

2

输入输出样例 #2

输入 #2

1001000100001000001

输出 #2

8

输入输出样例 #3

输入 #3

见附件中的 string/string3.in。

输出 #3

见附件中的 string/string3.out。

说明/提示

【样例解释 #1】

可以对长度为 22 的前缀进行第一次操作,此时字符串变为 011011

再对长度为 11 的前缀进行第二次操作,此时字符串变为 111111

【样例 3】

见选手目录下的 string/string3.in 与 string/string3.ans。

【数据范围】

nn 为字符串 ss 的长度。

对于所有测试数据有:1n1061\leq n \leq 10^6si[0,1]s_i \in [0,1]

测试点 nn \leq 特殊性质
121\sim 2 55
353\sim 5 1010
676\sim 7 10310^3
898\sim 9
1010 10610^6

特殊性质:字符串只包含一种数字。