#CF2062A. 字符串

字符串

题目描述

每次测试的时间限制:11 秒 每次测试的内存限制:512512 兆字节

给定一个长度为 nn 的字符串 ss,由 00 和/或 11 组成。在一次操作中,你可以从 ss 中选择一个非空子序列 tt,使得 tt 中任意两个相邻字符不同。然后,翻转 tt 中的每个字符(00 变成 1111 变成 00)。例如,若 $s = \texttt{0}\underline{\texttt{0}}\texttt{1}\underline{\texttt{0}}\underline{\texttt{1}} $(下划线表示选中的字符)且 t=s1s3s4s5=0101t = s_1 s_3 s_4 s_5 = \texttt{0101},操作后 ss 变为 $\texttt{1}\underline{\texttt{0}}\texttt{0}\underline{\texttt{1}}\underline{\texttt{0}} $。

计算将 ss 中所有字符变为 00 所需的最少操作次数。

回忆:对于字符串 s=s1s2sns = s_1 s_2 \dots s_n,任何满足 1i1<i2<<ikn1 \le i_1 < i_2 < \dots < i_k \le nk1k \ge 1)的字符串 t=si1si2sikt = s_{i_1} s_{i_2} \dots s_{i_k} 都是 ss 的一个子序列。

输入格式

第一行包含一个整数 tt1t1041 \le t \le 10^4)—— 输入测试用例的数量。 每个测试用例仅一行,包含字符串 ss1s501 \le |s| \le 50),其中 s|s| 表示 ss 的长度。

输出格式

对于每个测试用例,输出将 ss 中所有字符变为 00 所需的最少操作次数。

5
1
000
1001
10101
01100101011101
1
0
2
3
8

注意

在第一个测试用例中,你可以翻转 s1s_1。然后 ss 变为 00,所以答案是 11

在第四个测试用例中,你可以按顺序执行以下三次操作:

翻转 s1s2s3s4s5s_1 s_2 s_3 s_4 s_5。此时 ss 变为 $\underline{0}\underline{1}\underline{0}\underline{1}\underline{0}$。

翻转 s2s3s4s_2 s_3 s_4。此时 ss 变为 001000\underline{0}\underline{1}\underline{0}0

翻转 s3s_3。此时 ss 变为 0000000\underline{0}00

可以证明,无法在少于三次操作内将 ss 中所有字符变为 00,因此答案是 33