CF1105B Zuhair and Strings
题目描述
给定一个长度为 $n$ 的字符串 $s$ 和一个整数 $k$($1 \le k \le n$)。如果存在最大的非负整数 $x$,使得在 $s$ 中可以找到:
- $x$ 个互不相交(不重叠)的长度为 $k$ 的子串,
- 这 $x$ 个子串中的所有字符都相同(即每个子串只包含一种字符,并且所有子串的字符都相同),
那么称字符串 $s$ 的等级为 $x$。
子串是指一段连续的字符序列,由两个整数 $i$ 和 $j$($1 \le i \le j \le n$)定义,记作 $s[i \dots j] = s_i s_{i+1} \dots s_j$。
例如,当 $k=2$ 时:
- 字符串 "aabb" 的等级为 $1$(可以选取子串 "aa"),
- 字符串 "zzzz" 和 "zzbzz" 的等级为 $2$(都可以选取两个互不相交的 "zz" 子串),
- 字符串 "abed" 和 "aca" 的等级为 $0$(无法找到至少一个只包含一种字符的长度为 $k=2$ 的子串)。
Zuhair 给你整数 $k$ 和长度为 $n$ 的字符串 $s$,你需要求出字符串 $s$ 的等级 $x$。
输入格式
第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 2 \cdot 10^5$)——字符串的长度和 $k$ 的值。
第二行包含一个长度为 $n$ 的字符串 $s$,仅由小写拉丁字母组成。
输出格式
输出一个整数 $x$,表示字符串的等级。
说明/提示
在第一个样例中,可以选取 $2$ 个由字母 'a' 组成的不重叠子串:"(aa)ac(aa)bb",所以等级为 $2$。
在第二个样例中,可以选取 "a" 或 "b" 作为子串,答案为 $1$。
由 ChatGPT 4.1 翻译