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

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

题目描述

给定一个 01 字符串,你需要进行最少的操作使得这个串中只含有 11,对于一次操作,你可以选择这个串中的一个前缀中的每一个数翻转,即 11 变为 00,00 变为 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 的长度。

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

测试点 n≤n \leq 特殊性质
1∼21\sim 2 55 无
3∼53\sim 5 1010
6∼76\sim 7 10310^3 有
8∼98\sim 9 无
1010 10610^6

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