#CF2062A. 字符串
字符串
题目描述
每次测试的时间限制: 秒 每次测试的内存限制: 兆字节
给定一个长度为 的字符串 ,由 和/或 组成。在一次操作中,你可以从 中选择一个非空子序列 ,使得 中任意两个相邻字符不同。然后,翻转 中的每个字符( 变成 , 变成 )。例如,若 $s = \texttt{0}\underline{\texttt{0}}\texttt{1}\underline{\texttt{0}}\underline{\texttt{1}} $(下划线表示选中的字符)且 ,操作后 变为 $\texttt{1}\underline{\texttt{0}}\texttt{0}\underline{\texttt{1}}\underline{\texttt{0}} $。
计算将 中所有字符变为 所需的最少操作次数。
回忆:对于字符串 ,任何满足 ()的字符串 都是 的一个子序列。
输入格式
第一行包含一个整数 ()—— 输入测试用例的数量。 每个测试用例仅一行,包含字符串 (),其中 表示 的长度。
输出格式
对于每个测试用例,输出将 中所有字符变为 所需的最少操作次数。
5
1
000
1001
10101
01100101011101
1
0
2
3
8
注意
在第一个测试用例中,你可以翻转 。然后 变为 ,所以答案是 。
在第四个测试用例中,你可以按顺序执行以下三次操作:
翻转 。此时 变为 $\underline{0}\underline{1}\underline{0}\underline{1}\underline{0}$。
翻转 。此时 变为 。
翻转 。此时 变为 。
可以证明,无法在少于三次操作内将 中所有字符变为 ,因此答案是 。