AT_abc372_c [ABC372C] Count ABC Again
题目描述
给定一个长度为 $N$ 的字符串 $S$。接着给出 $Q$ 个查询,依次处理。
对于第 $i$ 个查询:
- 给定一个整数 $X_i$ 和一个字符 $C_i$,将 $S$ 的第 $X_i$ 个字符替换为 $C_i$。然后,输出字符串 $S$ 中包含 `ABC` 作为子串的次数。
这里,$S$ 的 **子串** 指的是,从 $S$ 的开头删除 $0$ 个或多个字符,从 $S$ 的结尾删除 $0$ 个或多个字符后得到的字符串。
例如,`ab` 是 `abc` 的子串,但 `ac` 不是 `abc` 的子串。
输入格式
第一行包含两个整数 $N$ 和 $Q$ ,分别表示字符串长度和查询次数。
第二行包含一个长度为 $N$ 的字符串 $S$,仅由大写英文字母组成。
接下来 $Q$ 行,每行包含一个整数 $X_i$ 和一个字符 $C_i$,表示将 $S$ 的第 $Xi$ 个字符替换为 $C_i$。
输出格式
输出 $Q$ 行。第 $i$ 行 $(1 \le i \le Q)$ 表示第 $i$ 次查询后字符串中 `ABC` 子串的数量。
说明/提示
### 约束
- $3 \le N \le 2×10^5$
- $1 \le Q \le 2×10^5$
- $S$ 是由大写字母组成的长度为 $N$ 的字符串
- $1 \le X_i \le N$
- $C_i$ 是大写字母
### 示例解释 1
处理每个查询后的 $S$ 如下:
- 处理第 $1$ 个查询后:$S$ 变为 `ABCBABC`。其中 `ABC` 作为子串出现了 $2$ 次。
- 处理第 $2$ 个查询后:$S$ 变为 `ABABABC`。其中 `ABC` 作为子串出现了 $1$ 次。
- 处理第 $3$ 个查询后:$S$ 变为 `ABABCBC`。其中 `ABC` 作为子串出现了 $1$ 次。
- 处理第 $4$ 个查询后:$S$ 变为 `ABAGCBC`。其中 `ABC` 作为子串出现了 $0$ 次。
### 示例解释 2
有时处理查询前后 $S$ 可能不会发生变化。