题目描述
Sam 有一根彩带,这根彩带上一共有 26 种不同的颜色,并且彩带均匀的分割成了长度为 1 的部分,每一块都有一种颜色,为了方便描述颜色,每种颜色用一个小写字母表示。
现在 Sam 要用这些彩带来组成一根他心目中完美的彩带,于是他先把这根彩带全部剪开,变成了一堆纯色且长度为 1 的彩带片,对于 a∼z 每种颜色依次有 ai 片。
而 Sam 希望得到一根长度为 n 的完美彩带 s,完美彩带需要满足两个条件:
- 首先要保证,组成这根彩带的任意两个相邻的彩带片的颜色满足 si≤si+1;
- 这根完美彩带中必须包含着一个长度为 m 的次完美彩带 b(bi 可以不连续),例如 b=abcd,那么对于 s=abccd,adbdcd 都是满足的;
现在 Sam 想知道,按他手里现有的这些彩带片,他能组合出多少种不同的完美彩带?
由于方案数可能很大,请你将答案对 1e9+7 取模。
输入格式
输入第一行包含两个整数 n,m,含义如题。
输入第二行包含 26 个整数 ai,依次表示 a∼z 每种颜色的彩带片数量。
输入第三行包含一个字符串 b,依次表示次完美彩带的颜色,其中每种颜色用一个小写字母表示。
输出格式
输出一个整数,表示 Sam 能组合出多少种不同的完美彩带,答案对 1e9+7 取模,若不存在合法方案则输出 0。
输入输出样例 #1
输入 #1
6 4
1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9
abcd
输出 #1
277
说明/提示
数据范围
| 测试点编号 |
m≤ |
特殊性质 |
| 1 |
1000 |
只有一个 ai 不是 0 |
| 2 |
1 |
|
| 3 |
2 |
| 4 |
1000 |
只有两个 ai 不是 0 |
| 5 |
所有 ai 之和小于 20 |
| 6 |
1000 |
答案小于 109+7 |
| 7 |
可能的方案数为 0 |
| 8 |
b 序列中存在 bi>bi+1 |
| 9∼10 |
|
对于所有数据,有 1≤m≤n≤1000,1≤ai≤109。
样例解释
可能的方案为:
- abccd 后拼接 d∼z 中的任意一个字符,方案为 23 种。
- abcdd 后拼接 e∼z 中的任意一个字符,方案为 22 种。
- 同 2 号方案,abcde∼abcdy 依次有 21+20+19+…1=231 种。
- abcdzz 一种。
共计方案 23+22+231+1=277 种。