CF1955E Long Inversions
题目描述
给定一个长度为 $n$ 的 $01$ 字符串 $s$。$01$ 字符串是指只包含字符 `1` 和 `0` 的字符串
可以选定一个整数 $k\;(1 \le k \le n )$,将字符串中的连续 $k$ 个字符进行替换,将 $0$ 替换成 $1$,$1$ 替换成 $0$。
当 $ n=5,s=00100 $时 , 你可以指定 $k=3$ ,做如下操作:
- 翻转 $[1,3]$ 的子串:$ s={\color{blue}{110}}00 $ ;
- 反转 $[3,5]$ 的子串:$ s=11\color{blue}{111} $ ;
经过不限次操作后,寻找能将 $01$ 字符串中的所有字符转换成 $1$ 的最大 $k$ 值。
输入格式
第一行一个整数 $t\;(1 \le t \le 10^4)$,表示测试组数。
每组测试数据第一行一个整数 $n\;(1 \le n \le 5000)$,字符串 $s$ 的长度。
第二行一个长度为 $n$ 的字符串 $s$,只包含 `1` 和 `0`。
保证所有测试数据中 $n^2$ 的总和不超过 $25 \times 10^6$。
输出格式
每组测试数据输出一个整数 $k\;(1 \le k \le n)$,表示能通过操作把字符串变成全 `1` 的最大 $k$ 值。