CF1791D.Distinct Split

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Distinct Split

题目描述

我们定义字符串 xx 的函数 f(x)f(x) 为该字符串中不同字符的数量。例如,f(abc)=3f(\texttt{abc}) = 3f(bbbbb)=1f(\texttt{bbbbb}) = 1f(babacaba)=3f(\texttt{babacaba}) = 3

给定一个字符串 ss,请将其拆分为两个非空字符串 aabb,使得 f(a)+f(b)f(a) + f(b) 的值最大。换句话说,找到 f(a)+f(b)f(a) + f(b) 的最大可能值,其中 a+b=sa + b = s(即字符串 aa 与字符串 bb 拼接后等于字符串 ss)。

输入格式

输入包含多组测试用例。第一行包含一个整数 tt1t1041 \leq t \leq 10^4),表示测试用例的数量。接下来是每个测试用例的描述。

每个测试用例的第一行包含一个整数 nn2n21052 \leq n \leq 2\cdot10^5),表示字符串 ss 的长度。

第二行包含一个仅由小写英文字母组成的字符串 ss

保证所有测试用例中 nn 的总和不超过 21052\cdot10^5

输出格式

对于每个测试用例,输出一个整数,表示满足 a+b=sa + b = s 的情况下 f(a)+f(b)f(a) + f(b) 的最大可能值。

说明/提示

对于第一个测试用例,只有一种有效的拆分方式,即将 aa\texttt{aa} 拆分为两个非空字符串 a\texttt{a}a\texttt{a},此时 f(a)+f(a)=1+1=2f(\texttt{a}) + f(\texttt{a}) = 1 + 1 = 2

对于第二个测试用例,将 abcabcd\texttt{abcabcd} 拆分为 abc\texttt{abc}abcd\texttt{abcd} 可以得到答案 f(abc)+f(abcd)=3+4=7f(\texttt{abc}) + f(\texttt{abcd}) = 3 + 4 = 7,这是最大可能值。

对于第三个测试用例,无论如何拆分字符串,答案始终为 22

由 ChatGPT 4.1 翻译

样例

5
2
aa
7
abcabcd
5
aaaaa
10
paiumoment
4
aazz
2
7
2
10
3

在线编程 IDE

建议全屏模式获得最佳体验