AT_abc246_h [ABC246Ex] 01? Queries
题目描述
给定一个只包含 `0`、`1`、`?` 的长度为 $N$ 的字符串 $S$。
此外,给定 $Q$ 个查询 $(x_1, c_1), (x_2, c_2), \ldots, (x_Q, c_Q)$。
其中,对于 $i = 1, 2, \ldots, Q$,$x_i$ 是满足 $1 \leq x_i \leq N$ 的整数,$c_i$ 是 `0`、`1`、`?` 中的任意一个字符。
请依次对每个查询 $(x_i, c_i)$ 执行以下操作:
1. 首先,将 $S$ 的第 $x_i$ 个字符(从前往后数)修改为 $c_i$。
2. 然后,输出将 $S$ 中所有的 `?` 独立地替换为 `0` 或 `1` 后,所有可能得到的字符串的(不一定连续的)子序列中,所有可能出现的非空字符串的个数,结果对 $998244353$ 取模。
输入格式
输入按以下格式从标准输入给出。
> $N$ $Q$
> $S$
> $x_1$ $c_1$
> $x_2$ $c_2$
> $\vdots$
> $x_Q$ $c_Q$
输出格式
输出 $Q$ 行。对于 $i = 1, 2, \ldots, Q$,第 $i$ 行输出第 $i$ 个查询 $(x_i, c_i)$ 的答案(即上述操作 2 中的字符串个数对 $998244353$ 取模的结果)。
说明/提示
## 限制条件
- $1 \leq N, Q \leq 10^5$
- $N, Q$ 为整数
- $S$ 是只包含 `0`、`1`、`?` 的长度为 $N$ 的字符串
- $1 \leq x_i \leq N$
- $c_i$ 是 `0`、`1`、`?` 中的任意一个字符
## 样例解释 1
- 第 1 个查询后,$S = 110$。作为 $S = 110$ 的子序列可能出现的字符串有:`0`、`1`、`10`、`11`、`110`,共 $5$ 个。因此,第 1 个查询的答案为 $5$。
- 第 2 个查询后,$S = 1?0$。将 `?` 替换为 `0` 或 `1` 后得到的字符串为 `100` 和 `110`,它们的所有子序列可能出现的字符串有:`0`、`1`、`00`、`10`、`11`、`100`、`110`,共 $7$ 个。因此,第 2 个查询的答案为 $7$。
- 第 3 个查询后,$S = 1??$。将两个 `?` 替换为 `0` 或 `1` 后得到的字符串为 `100`、`101`、`110`、`111`,它们的所有子序列可能出现的字符串有:`0`、`1`、`00`、`01`、`10`、`11`、`100`、`101`、`110`、`111`,共 $10$ 个。因此,第 3 个查询的答案为 $10$。
## 样例解释 2
请注意,答案需要对 $998244353$ 取模。
由 ChatGPT 4.1 翻译