#loj4879. 「PA 2025」Podciągi
「PA 2025」Podciągi
[AdditionalFile4879.zip](file://AdditionalFile4879.zip?type=additional_file)
#4879. 「PA 2025」Podciągi
标签: 传统 | 时间限制: 15000 ms | 内存限制: 1024 MiB |
题目描述
你有一个长度为 的字符串 ,由字母集 $\{\texttt{a}, \texttt{b}, \texttt{c}, \texttt{d}, \texttt{e}, \texttt{f}\}$ 组成。接下来会对它进行 次操作,每次操作是替换字符串中的一个字母。
考虑字符串 的所有子序列集合 ,也就是通过删除某些字母后得到的所有可能字符串(多重集)。
你的任务是跟踪一个信息:在 中,有多少不同的非空字符串 至少出现了两次。
比如,对于字符串 ,有 个这样的字符串 :
- 字符串 在 中出现 次。
- 字符串 在 中出现 次。
- 字符串 在 中出现 次(分别删去位置 ; 或 的字母)。
- 字符串 在 中出现 次(分别删去位置 ; 或 的字母)。
- 字符串 在 中出现 次(分别删去位置 ; 或 的字母)。
- 字符串 在 中出现 次(分别删去位置 ;; 或 的字母)。
请你算出初始字符串 以及每次操作后 的 中符合条件的字符串 的数量。因为这些数字可能很大,输出它们对 取模的结果。
输入格式
输入的第一行包含两个整数 和 ,分别表示字符串长度和操作次数。
第二行是一个长度为 的字符串,仅由小写字母 到 组成。
接下来的 行描述操作,每行包含一个整数 和一个字母 $(z_{i} \in \{\texttt{a}, \texttt{b}, \texttt{c}, \texttt{d}, \texttt{e}, \texttt{f}\})$,表示将 中第 位置的字母替换为 。
输出格式
输出 行,每行一个整数。第 行表示初始状态或前 次操作后的 中, 内至少出现两次的不同字符串 的数量,结果对 取模。
样例
输入
4 3
abca
1 a
4 d
2 c
输出
1
1
0
4
以下是字符串 在每次更新后的状态,以及作为 子序列至少出现两次的字符串 :
- 字符串:,子序列:
- 字符串:,子序列:
- 字符串:,子序列:
- 字符串:,子序列: