25年1月-B组(才俊)
Contest is over.
开始 2025-01-04 08:00:00
当前 2026-03-10 15:44:03
结束 2025-01-05 23:00:00

C. 子串染色(color)

题目描述

小 A 拥有一个仅由小写字母组成的字符串 S

可以将其中的字母染色为 k 种颜色。并不是每个字母都需要进行染色,但是要求对于每种颜色,必须至少有一个字母由该颜色染色

然后可以交换相同颜色的字母任意次

操作结束后意味着小 A 将拥有 k 种颜色的子串,第 i 个子串包含了所有染色为第 i 种颜色的字母。

小 A 的任务是对这个字符串 S 进行染色,但是要保证这 k 个子串可以成为回文子串,并且其中最短的子串长度尽可能长

如果字符串从左到右和从右到左的读取结果相同那么它就是回文的。比如字符串aabaaaaa是回文的,但是ababaaabaa不是回文的。

输入

第一行读入一个整数 t,表示有 t 组测试数据。

接下来会读入 t 组测试数据:

每组测试数据的第一行为两个整数 nk,分别表示字符串 S 的长度 和 可以染色的颜色种类 。

第二行为一个仅包含小写字母的字符串 S

输出

输出 t 个整数,每行一个,表示对于每组数据的字符串 S 染色后所能形成的 k 个子串中最短的回文串最长的长度

样例

输入

1
8 2
bxyaxzay

输出

3

输入

2
6 3
aaaaaa
6 1
abcdef

输出

2
1

输入

7
6 6
abcdef
3 2
dxd
11 2
abcabcabcac
6 6
sipkic
7 2
eatoohd
3 1
llw
6 2
bfvfbv

输出

1
1
5
1
1
3
3
说明

样例 1 解释

可以把长度为 8 的字符串 bxyaxzay 染色为两种颜色。

染色后可以变为:\red{b}\blue{xy}\red{a}\blue{xz}\red{a}\blue{y}

我们可以得到两个颜色的子串分别为:\red{baa}\blue{xyxzy}

这两个子串都已通过交换位置变为回文子串:\red{aba}\blue{xyzyx}

最短长度为 3,且无法再找到让其变得更大的方案。

样例 4

见选手目录下的 color/color4.in 与 color/color4.ans。

数据规模

测试点编号tkn特殊性质
测试点 1 \sim 2\le 3\le 10 \le 10A
测试点 3 \sim 5\le 3\le 10 \le 12B
测试点 6\le 3\le 10 \le 15C
测试点 7 \sim 8\le 10\le 10 \le 10
测试点 9 \sim 13\le 30\le 30 \le 100
测试点 14 \sim 25\le 10000\le 2 \times 10^5 \le 2 \times 10^5

特殊性质 A:字符串中恰好只有 1 种字母,如 Saaaaa

特殊性质 B:字符串中恰好只有 2 种字母,如 Sabababa

特殊性质 C:每种字符出现的次数恰好是 k 的倍数,如 Sbbbcccdddk=3

数据保证每组测试用例中 k \leq nn 的和不会超过 2 \times 10^5

附件下载

color.zip (654.62 KB)

编辑代码
登录

注册
题目参数
时间限制 1 秒
内存限制 512 MB
提交次数 313
通过人数 117
金币数量 0 枚
难度 基础
提交