#P4879. 「PA 2025」Podciągi
「PA 2025」Podciągi
题目描述
题目译自 PA 2025 Runda 5 Podciągi
你有一个长度为 的字符串 ,由字母集 $\{\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
以下是字符串 在每次更新后的状态,以及作为 子序列至少出现两次的字符串 :
- 初始字符串:,符合条件的子序列:
- 第一次操作后:(不变),符合条件的子序列:
- 第二次操作后:,符合条件的子序列:
- 第三次操作后:,符合条件的子序列:$\{\texttt{a}, \texttt{c}, \texttt{ac}, \texttt{cc}\}$