#550. 二进制字符串

二进制字符串

题目描述

给定一个长度为 nn 的二进制字符串 ss(每个字符要么是 0 要么是 1),你可以选择一个位置 ii2in12\leq i\leq n-1),当满足:si1=si+1=1s_{i-1}=s_{i+1}=1,你可以将 sis_i 修改为 0011

你可以执行无限次上述操作,问字符串内 11 的总数的最小值和最大值分别可能是多少?

输入格式

本题有多组数据

第一行输入一个整数 tt,表示测试数据组数。每一组数据:

  • 第一行输入一个整数 nn 表示字符串的长度。
  • 第二行输入一个长度为 nn 的字符串 ss

输出格式

输出一共输出 tt 行,每行两个空格隔开的整数分别表示 11 的数量的最小值和最大值。

4
3
111
6
011011
7
1011101
9
100101101
2 3
3 5
4 7
5 7

提示

第一个测试用例中,最终字符串中 11 的最小数量是 22。操作过程是:

$$\mathtt{1}\underline{\mathtt{1}}\mathtt{1} \to \mathtt{101}. $$

最大数量是 3 3 ,不需要操作。

第二个测试用例中,最终字符串中 11 的最小数量是 33。操作过程是:

$$\mathtt{011}\underline{\mathtt{0}}\mathtt{11} \to \mathtt{01}\underline{\mathtt{1}}\mathtt{111} \to \mathtt{0101}\underline{\mathtt{1}}\mathtt{1} \to \mathtt{010101}. $$

最大数量是 55,操作过程是:

$$\mathtt{011}\underline{\mathtt{0}}\mathtt{11} \to \mathtt{011111}. $$

数据范围

对于 100%100\% 的数据满足:1t3001 \leq t \leq 3003n1003 \leq n \leq 100。字符串仅包含 01

  • 子任务 1(30 分):保证字符串中任意两个 1 之间的距离至少为 3(即不存在子串 11101)。
  • 子任务 2(30 分):保证输入字符串 ss 全由 1 组成。
  • 子任务 3(40 分):无特殊限制。