CF1791D.Distinct Split

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

Distinct Split

题目描述

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

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

输入格式

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

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

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

保证所有测试用例中 nn 的总和不超过 2⋅1052\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

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