#L0382. 字符串切分

字符串切分

题目描述

给你一个仅由小写字母组成的字符串 ss

你需要将 ss 切分成若干个非空子串 t1,t2,,tkt_1, t_2, \ldots, t_k(即 s=t1+t2++tks = t_1 + t_2 + \cdots + t_k),使得相邻的两个子串不相同(即 1ik1,titi+1\forall 1 \le i \le k - 1, t_i \ne t_{i + 1})。

求满足条件的切分方案中 kk 的最大值。

输入格式

本题有多组测试数据。

第一行输入一个正整数 TT,表示测试数据组数。

对于每组测试数据:

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

第二行包含一个长度为 nn 的仅由小写字母组成的字符串 ss

输出格式

对于每组数据,输出一行一个整数,表示合法切分方案中子串个数的最大值。

样例

4
3
abc
5
aabbb
6
aaaaaa
10
pppqqppppq
3

3 4 7

</p>

提示

【样例解释】

在第一组数据中,一种最优切分为 [a,b,c][\texttt{a}, \texttt{b}, \texttt{c}],共 33 个子串。

在第二组数据中,一种最优切分为 [a,abb,b][\texttt{a}, \texttt{abb}, \texttt{b}],共 33 个子串。

在第三组数据中,一种最优切分为 [a,aa,a,aa][\texttt{a}, \texttt{aa}, \texttt{a}, \texttt{aa}],共 44 个子串。

【数据范围】

本题采用捆绑测试且开启子任务依赖。

子任务编号分值$n \le$$\sum n \le$特殊性质子任务依赖
$1$$18$$9$$10^4$
$2$$21$$50$$10^3$$1$
$3$$12$$10^6$$10^6$$s_1 = s_2 = \cdots = s_n$
$4$$23$$10^6$$10^6$恰好存在一个位置 $1 \le i \le n - 1$ 使得 $s_i \ne s_{i + 1}$
$5$$26$$10^6$$10^6$$1, 2, 3, 4$

对于所有数据,满足 1T1051 \le T \le 10^51n,n1061 \le n, \sum n \le 10^6ss 仅由小写字母组成。

难度 普及-
通过率 100%
尝试 1
已通过 1
ID
1110
类型
传统题
Time Limit
1000ms
Memory Limit
512MiB
上传者