#G0109. 茳峤串【2025暑假集训T1】

茳峤串【2025暑假集训T1】

题目描述

江桥定义一个只由字符 01 组成的字符串为 “茳峤串” 当且仅当其包含 至少 33"01"\texttt{"01"}"10"\texttt{"10"} 子串。

例如 "11010100","00110011"\texttt{"11010100"},\texttt{"00110011"} 都是“茳峤串”,而 "001110","1111111"\texttt{"001110"},\texttt{"1111111"} 则不是,因为前者只包含一个 "01"\texttt{"01"} 和一个 "10"\texttt{"10"} 总共两个这样的子串,而后者一个这样的子串都没有。

江桥现在得到了一个只包含 01 的字符串 ss

现在,江桥进行任意次(包括 00 次)以下操作:

花费 11 的代价,将字符串中的任意一个字符反转(即 00 变为 1111 变为 00

江桥至少要花费多少代价,才能将字符串变为“茳峤串“?

容易证明,在 n4n\geq 4 的情况下一定存在合法的操作方式。

输入格式

输入包含多组数据。第一行一个正整数 TT,表示数据组数。对于每组数据:

第一行一个正整数 nn,表示字符串长度。

第二行一个长度为 nn 的字符串 ss,含义如上所述。

输出格式

一个非负整数代表江桥至少要花费多少代价,才能将字符串变为“茳峤串”。

5
4
1100
4
0101
4
0110
4
0111
4
0000
2
0
2
1
2

样例解释

对于第一组数据,只需要花费 22 的代价把第二个字符变成 0,并把第三个字符变成 1 即可。

数据规模与约定

下发文件

下发文件对应子任务 11

有合理的子任务依赖。

子任务编号 n\sum n≤ 分值
11 44 1010
22 1010 2020
33 10210^2
44 10310^{3}
55 10610^{6} 3030

对于 100%100\% 的数据:保证 $1 \leq T \leq 10^4,4 \leq n,\sum n \leq 10^{6},|s|=n,s_i\in\{'0','1'\}$。