luogu#P12238. [蓝桥杯 2023 国 Java A] 单词分类

    ID: 36530 远端评测题 2000ms 512MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划 DP2023树形 DP字典树 Trie蓝桥杯国赛

[蓝桥杯 2023 国 Java A] 单词分类

题目描述

在遥远的 LQ 国,只存在三种字符:l\tt{l}q\tt{q}b\tt{b}(ASCII 码分别为 1081081131139898),所有的单词都由这三种字符组合而来。小蓝为了更加快速的记忆单词,决定将词典上所有的单词按照单词前缀将其分为 KK 类,具体的要求是:

  1. 选出 KK 个不同的单词前缀作为 KK 类;
  2. 对于字典上的每个单词,只能属于 KK 类中的某一个类,不能同时属于多个类;
  3. 对于 KK 类中的每个类,至少包含有一个单词。

现在已知字典上一共有 NN 个单词,小蓝想要知道将这 NN 个单词按照上述要求分为 KK 类,一共有多少种不同的方案。两个方案不同指的是两个方案各自选出的 KK 个单词前缀不完全相同。答案可能过大,所以你需要将答案对 10000000071\,000\,000\,007(即 109+710^9 + 7)取模后输出。

输入格式

输入的第一行包含两个整数 NNKK

接下来 NN 行,每行包含一个单词,由 l\tt{l}q\tt{q}b\tt{b} 三种字符组成。

输出格式

输出一个整数表示答案。答案可能很大,请输出答案对 10000000071\,000\,000\,007 取模的值。

4 2
lqb
lql
qqq
qql
4

提示

样例说明

  • 方案 1:l=lqb,lql\tt{l}=\tt{lqb}, \tt{lql}q=qqq,qql\tt{q}=\tt{qqq}, \tt{qql}
  • 方案 2:lq=lqb,lql\tt{lq}=\tt{lqb}, \tt{lql}q=qqq,qql\tt{q}=\tt{qqq}, \tt{qql}
  • 方案 3:l=lqb,lql\tt{l}=\tt{lqb}, \tt{lql}qq=qqq,qql\tt{qq}=\tt{qqq}, \tt{qql}
  • 方案 4:lq=lqb,lql\tt{lq}=\tt{lqb}, \tt{lql}qq=qqq,qql\tt{qq}=\tt{qqq}, \tt{qql}

以方案 11 为例,他表示选出的两类对应的前缀分别是 l\tt lq\tt q,属于前缀 l\tt l 的单词有 lqb\tt {lqb}lql\tt{lql},属于前缀 q\tt q 的单词有 qqq\tt{qqq}qql\tt{qql},方案 11 将四个单词按照前缀分成了两类,且每类至少包含一个单词,每个单词仅属于一类,所以方案 11 满足题意。

评测用例规模与约定

  • 对于 30%30\% 的评测用例,1N101 \leq N \leq 101K51 \leq K \leq 5
  • 对于 50%50\% 的评测用例,1N501 \leq N \leq 501K101 \leq K \leq 10
  • 对于所有评测用例,1N2001 \leq N \leq 2001K1001 \leq K \leq 10011 \leq 单词长度 10\leq 10