luogu#P8643. [蓝桥杯 2016 国 AC] 碱基

    ID: 12628 远端评测题 1000ms 128MiB 尝试: 0 已通过: 0 难度: 5 上传者: 标签>动态规划,dp2016哈希,HASH蓝桥杯国赛

[蓝桥杯 2016 国 AC] 碱基

题目描述

生物学家正在对 nn 个物种进行研究。

其中第 ii 个物种的 DNA 序列为 s[i]s[i],其中的第 jj 个碱基为 s[i][j],s[i][j], 碱基一定是 A,G,C,T 之一。

生物学家想找到这些生物中一部分生物的一些共性,他们现在关注那些至少在 mm 个生物中出现的长度为 kk 的连续碱基序列。准确的说,科学家关心的序列用 2m2m 元组 (i1,p1,i2,p2,im,pm)(i_1,p_1,i_2,p_2 \cdots ,i_m,p_m) 表示,

满足:

1i1<i2<<imn1 \le i_1<i_2< \cdots <i_m \le n

且对于所有 q(0q<k)q(0 \le q<k)

$$s[i_1][p_1+q]=s[i_2][p_2+q]= \cdots =s[i_m][p_m+q] $$

现在给定所有生物的 DNA 序列,请告诉科学家有多少的 2m2m 元组是需要关注的。如果两个 2m2m 元组有任何一个位置不同,则认为是不同的元组。

输入格式

输入的第一行包含三个整数 nnmmkk,两个整数之间用一个空格分隔,意义如题目所述。

接下来 nn 行,每行一个字符串表示一种生物的 DNA 序列。

DNA 序列从 11nn 编号,每个序列中的碱基从 11 开始依次编号,不同的生物的 DNA 序列长度可能不同。

输出格式

输出一个整数,表示关注的元组个数。

答案可能很大,你需要输出答案除以 1000000007(109+7)1000000007(10^9+7) 的余数。

3 2 2
ATC
TCG
ACG
2
4 3 3
AAA
AAAA
AAA
AAA
7

提示

数据规模与约定

对于 20%20\% 的数据,k5,k \le 5, 所有字符串总长 LL 满足 L100L \le 100

对于 30%30\% 的数据,L10000L \le 10000

对于 60%60\% 的数据,L30000L \le 30000

对于 100%100\% 的数据,n5,m5,1kL105n \le 5,m \le 5,1 \le k \le L \le 10^5

保证所有 DNA 序列不为空且只会包含A,G,C,T 四种字母。

时限 1 秒, 256M。蓝桥杯 2016 年第七届国赛