luogu#P5417. [CTSC2016] 萨菲克斯·阿瑞
[CTSC2016] 萨菲克斯·阿瑞
题目描述
小 P 来到了 NOIP2044 的赛场上,他发现第二题的题目是这样的:给你一个长度为 的字符串,该字符串由至多 种不同的字符组成,其中第 种字符的出现次数不超过 ,问你这个字符串的后缀数组是什么。
聪明的小 P 想到了一个新的问题希望你来帮忙解答:在题目给定的限制下,能有多少种不同的答案。也就是所有由 种字符组成,其中第 种字符出现次数不超过 ,且长度为 的字符串,共有多少种不同的后缀数组。
由于答案很大,你只用输出答案对 取模后的数。
对于一个字符串 ,记 表示 这个位置到末尾的子串。后缀数组为一个 到 的排列 ,满足 $\mathrm{suf}(p_1) < \mathrm{suf}(p_2) < \dots < \mathrm{suf}(p_n)$。对于两个字符串 和 ,令 为第一个使得 的位置,那么我们 和 中小的对应的字符串更小,如果 不存在,那么长度小的字符串更小。
对于字符串之间的大小关系,我们规定第 个字符最小,第 个字符次小,以此类推。
输入格式
输入的第一行包含两个正整数 ,表示字符串的长度为 ,共有 种字符。
接下来一行,包含 个非负整数 ,表示每种字符最多的出现次数。保证 $0 \leq c_1,c_2,...,c_m \leq n,c_1+c_2+...+c_m \geq n$。
输出格式
输出共一行,包含一个正数,表示答案。
3 2
2 2
5
10 5
2 3 4 3 2
1003811
提示
样例一解释
我们记 为第一种字符, 为第二种字符,那么共有 这六种可能的字符串。它们的后缀数组为
所以共有 种不同的结果。
数据范围
对于前 的测试点,
另有 的测试点,
另有 的测试点,,其中有 的测试点 , 的测试点 , 的测试点
另有 的测试点,
另有 的测试点,
另有 的测试点,