CF1791D.Distinct Split

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

Let's denote the f(x)f(x) function for a string xx as the number of distinct characters that the string contains. For example f(abc)=3f(\texttt{abc}) = 3 , f(bbbbb)=1f(\texttt{bbbbb}) = 1 , and f(babacaba)=3f(\texttt{babacaba}) = 3 .

Given a string ss , split it into two non-empty strings aa and bb such that f(a)+f(b)f(a) + f(b) is the maximum possible. In other words, find the maximum possible value of f(a)+f(b)f(a) + f(b) such that a+b=sa + b = s (the concatenation of string aa and string bb is equal to string ss ).

输入格式

The input consists of multiple test cases. The first line contains an integer tt ( 1t1041 \leq t \leq 10^4 ) — the number of test cases. The description of the test cases follows.

The first line of each test case contains an integer nn ( 2n21052 \leq n \leq 2\cdot10^5 ) — the length of the string ss .

The second line contains the string ss , consisting of lowercase English letters.

It is guaranteed that the sum of nn over all test cases does not exceed 21052\cdot10^5 .

输出格式

For each test case, output a single integer — the maximum possible value of f(a)+f(b)f(a) + f(b) such that a+b=sa + b = s .

输入输出样例

  • 输入#1

    5
    2
    aa
    7
    abcabcd
    5
    aaaaa
    10
    paiumoment
    4
    aazz

    输出#1

    2
    7
    2
    10
    3

说明/提示

For the first test case, there is only one valid way to split aa\texttt{aa} into two non-empty strings a\texttt{a} and a\texttt{a} , and f(a)+f(a)=1+1=2f(\texttt{a}) + f(\texttt{a}) = 1 + 1 = 2 .

For the second test case, by splitting abcabcd\texttt{abcabcd} into abc\texttt{abc} and abcd\texttt{abcd} we can get the answer of f(abc)+f(abcd)=3+4=7f(\texttt{abc}) + f(\texttt{abcd}) = 3 + 4 = 7 which is maximum possible.

For the third test case, it doesn't matter how we split the string, the answer will always be 22 .

首页