#P13547. [OOI 2022] Third grader's task
[OOI 2022] Third grader's task
Description
小男孩 Tyler 在厨房的冰箱上看到了一些带有符号的磁铁,这些磁铁可以拼成一个字符串 。
Tyler 很喜欢字符串,尤其喜欢那些字典序小于字符串 的字符串。玩着冰箱上的磁铁,他开始好奇:用 的字母重新排列,可以组成多少个不同的字符串,使得这些字符串的字典序小于 ?Tyler 还只读三年级,他无法回答这个问题。请你帮他计算,用 的字母重新排列,字典序小于 的排列有多少种。
我们称字符串 的字典序小于字符串 ,当且仅当满足以下两种情况之一:
- 存在某个位置 ,在此之前两个字符串完全相同,而第 位 的字符小于第 位 的字符;
- 字符串 是字符串 的前缀。
由于答案可能很大,请输出对 取模的结果。
Input Format
第一行包含两个整数 和 (),分别表示字符串 和 的长度。
第二行包含 个整数 (),表示字符串 的符号。
第三行包含 个整数 (),表示字符串 的符号。
Output Format
输出一个整数,表示可以通过重新排列 的字母得到且字典序小于 的字符串个数,对 取模。
3 4
1 2 2
2 1 2 1
2
4 4
1 2 3 4
4 3 2 1
23
4 3
1 1 1 2
1 1 2
1
Hint
说明
在第一个样例中,应统计 和 这两个字符串。 的字典序大于 ,所以不计入答案。
在第二个样例中,应统计所有排列,除了 ,所以答案是 。
在第三个样例中,只能统计 这一种。
评分说明
本题测试数据分为 6 组。只有通过某组所有测试点,且通过所有必需的前置组,才能获得该组分数。离线评测表示该组的结果在比赛结束后才能看到。注意,有些分组不要求通过样例测试点。
| 组别 | 分值 | 必须通过的组 | 备注 | ||
|---|---|---|---|---|---|
| 0 | -- | ||||
| 1 | 16 | 0 | |||
| 2 | 15 | -- | -- | ||
| 3 | 11 | 0--2 | |||
| 4 | 13 | 0--3 | |||
| 5 | 12 | -- | -- | 每个字符串内部所有字符均不同 | |
| 6 | 33 | 0--5 | 离线评测 | ||
京公网安备 11011102002149号