P16845 [GKS 2021 #C] Smaller Strings
题目描述
给定一个整数 $K$ 和一个长度为 $N$ 的字符串 $S$,$S$ 由英文字母表前 $K$ 个小写字母组成。求有多少个长度为 $N$ 的回文串,其字典序小于 $S$,并且仅由英文字母表前 $K$ 个小写字母组成。
由有序字母 $a_1, a_2, \dots, a_n$ 组成的字符串在字典序上小于另一个等长的字符串 $b_1, b_2, \dots, b_n$,如果存在第一个位置 $i$ 使得 $a_i < b_i$。例如,以下字符串按字典序递增排列:`aaa`、`aab`、`aba`、`cab`。
回文串是指正着读和反着读都相同的字符串。例如,`anna`、`racecar`、`aaa` 和 `x` 都是回文串,而 `ab`、`frog` 和 `yoyo` 不是。
由于这样的字符串数量可能非常大,请输出答案对 $10^9 + 7$ 取模的结果。
输入格式
输入的第一行给出测试用例的数量 $T$。接下来有 $T$ 个测试用例。
每个测试用例由两行组成。第一行包含两个整数 $N$ 和 $K$。第二行包含一个长度为 $N$ 的字符串 $S$,由小写字母组成。
输出格式
对于每个测试用例,输出一行,格式为 `Case #x: y`,其中 $x$ 是测试用例编号(从 $1$ 开始),$y$ 是字典序更小的回文串的数量对 $10^9 + 7$ 取模的结果。
说明/提示
在样例 #1 中,回文串有 `["aa", "bb"]`。
在样例 #2 中,回文串有 `["aaaaa", "aabaa", "aacaa", "aadaa", "aaeaa", "ababa", "abbba", "abcba"]`。
在样例 #3 中,回文串有 `["a", "b", "c"]`。
### 限制条件
$1 \le T \le 100$。
字符串 $S$ 由英文字母表前 $K$ 个小写字母组成。
**测试集 1**
$1 \le N \le 8$。
$1 \le K \le 5$。
**测试集 2**
$1 \le N \le 10^5$。
$1 \le K \le 26$。
翻译由 DeepSeek V4 Pro 完成