#HX1251F. 字符串拆分

提交14 通过10
通过率71.4%
时间限制1000ms
内存限制128MiB
    ID: 10033 传统题 1000ms 128MiB 尝试: 14 已通过: 10 难度: 普及 上传者: 标签>编程题C++CSPCSP复赛CSP复赛专项练习暑假CSP复赛集训暑假集训1251-模拟+优化

题目描述

题目描述

定义 f(x) 为字符串 s 中不同的字符数量,例如 f(abc)=3f(abc)=3f(TTTTT)=1f(TTTTT)=1f(TxTxyTxTx)=3f(TxTxyTxTx)=3

给定一个字符串 s,将它分成两个非空子串 a 和 b,使得 f(a)+f(b) 是可能的最大值,请你计算该最大值。

输入格式

第一行,包含一个整数 T,表示输入包含 T 组数据,每组数据:

  • 第一行,包含一个整数 n,表示字符串 s 的长度;
  • 第二行,包含一个字符串 s。

保证字符串 s 只包含大小写字母和数字字符,且区分大小写。

输出格式

对于每组数据,输出一行,包含一个整数,表示 f(a)+f(b) 的最大值,其中 a+b=sa+b=s

样例输入

2
2
aa
7
abcabcd

样例输出

2
7

提示

对 60% 的数据保证:1T100,2n8001\le T\le 100,2\le n\le 800

对 100% 的数据保证:1T104,2n2×1051\le T\le 10^{4},2\le n\le 2\times 10^{5},保证同一组数据中所有的 n 之和不超过 2×1052\times 10^{5}

2
2
aa
7
abcabcd
2
7
3
2
aa
2
ab
2
AA
2
2
2
2 
2 
aa 
7 
abcabcd
2
7