Mister B 和电脑在玩游戏。两个人轮流向字符串 $s$ 的末尾添加字符,Mister B 先开始。 开始时,字符串 $s$ 包含按顺序的前 $a$ 个字母,例如 $a=5$ 时 $s=\texttt{abcde}$。 Mister B 每次向字符串 $s$ 的末尾添加任意的 $b$ 个字符。电脑每次取出 $s$ 的长度为 $a$ 的后缀,并将前 $a$ 个没有在后缀中出现的字母按顺序组成字符串 $t$,再把 $t$ 加入 $s$ 的末尾。例如,$a=4$,后缀为 $\texttt{bfdd}$,则 $t=\texttt{aceg}$。 求 $s$ 的第 $l$ 到第 $r$ 个字符中,最少有多少个不同的字符。(含第 $l$ 个和第 $r$ 个字符,字符从 $1$ 开始标号)
时间: 2023-09-05 08:07:24 浏览: 75
这是一个关于字符串操作的问题。我们可以逐步模拟过程来求解。
首先,我们可以观察到每次操作后,字符串 $s$ 的长度会增加 $b$,且最后 $a$ 个字符会被替换成新的字符。所以,我们可以通过计算 $l$ 和 $r$ 与每次操作的长度关系来确定最终字符串的长度。
假设经过 $k$ 次操作后,字符串 $s$ 的长度为 $n$,其中 $n \geq a$。那么有 $n = a + k \cdot b$。
接下来,我们计算 $l$ 和 $r$ 在第 $k$ 次操作后的位置。由于每次操作后 $a$ 个字符会被替换,所以在第 $k$ 次操作后,$l$ 和 $r$ 的位置会发生变化。具体而言,$l$ 和 $r$ 在第 $k$ 次操作后的位置为 $l' = l - (k-1) \cdot b$ 和 $r' = r - (k-1) \cdot b$。
现在我们可以将问题分为三种情况来讨论:
1. 如果 $l' > n$,则说明第 $l$ 到第 $r$ 个字符都在每次操作后被替换掉了,所以最少有 $0$ 个不同的字符。
2. 如果 $r' \leq a$,则说明第 $l$ 到第 $r$ 个字符都在每次操作后保持不变,所以最少有 $r' - l' + 1$ 个不同的字符。
3. 如果 $l' \leq n$ 且 $r' > a$,则说明第 $l$ 到第 $r$ 个字符在第 $k$ 次操作后发生了变化。
对于第 $k$ 次操作后的字符串,我们可以观察到每个字符在 $a$ 个字符中的位置是固定的。假设 $t$ 中的字符按顺序为 $t_1, t_2, \dots, t_a$,则第 $l'$ 到第 $r'$ 个字符中最少有 $r' - l' + 1 - (a - (t_{l' \mod a}, t_{(l'+1) \mod a}, \dots, t_{r' \mod a}}))$ 个不同的字符。
综上所述,我们可以根据以上思路编写代码来解决这个问题。
阅读全文