开始: 2026-10-06 00:00:00

【集训04】CSP-J模拟赛1006

结束: 2026-10-07 00:00:00
当前  2026-11-04 11:35:08  类型: IOI  状态: 已经结束 

P5. 删两字符del
描述

Dmitry 有一个由小写拉丁字母组成的字符串 s。

他决定从 s 中**删除两个连续的字符**(删除的位置可以任意选择)。问:一共能得到多少种**互不相同**的字符串?

例如 s= `aaabcc`:删第 1~2 个或第 2~3 个字符都得到 `abcc`;删第 3~4 个得 `aacc`;删第 4~5 个得 `aaac`;删第 5~6 个得 `aaab`。共 4 种。


输入

第一行一个整数 t,表示数据组数。

接下来每组两行:第一行整数 n,第二行长度为 n 的字符串 s(仅含小写字母)。


输出

每组输出一行一个整数,表示能得到的不同字符串数量。


样例

输入

7
6
aaabcc
10
aaaaaaaaaa
6
abcdef
7
abacaba
6
cccfff
4
abba
5
ababa

输出

4
1
5
3
3
3
1

输入

1
5
aacaa

输出

3
提示

样例 1 :

`aaaaaaaaaa` 怎么删都得到 8 个 a,共 1 种;

`abcdef` 删 5 个不同位置得到 5 种;

`ababa` 任何删除都得到 `aba`,共 1 种。

样例 2:`aacaa` 删法得到 `caa`(删 1~2)、`aaa`(删 2~3 或 3~4)、`aac`(删 4~5),共 3 种。

| 20% | 1~5 | 20 | n \le 20 | 

| 60% | 6~15 | 40(累计 60) | n \le 2000 | 

| 100% | 16~25 | 40(累计 100) | n \le 2 \times 10^5,t 组合计 n \le 2\times 10^5 | 


提交

题目参数
时间限制 1 秒
内存限制 128 MB
提交