AT_abc434_g [ABC434G] Keyboard

题目描述

对于一个只包含 `1`、`2`、$\dots$、`9` 和 `B` 的字符串 $A$,定义 $f(A)$ 为通过以下过程得到的字符串: - 初始有一个空字符串 $C$。 - 依次对 $i = 1, 2, \dots, |A|$ 进行如下操作: - 如果 $A_i$ 是 `1`、`2`、$\dots$、`9`,则将 $A_i$ 加到 $C$ 的末尾。 - 如果 $A_i = \text{B}$,则删除 $C$ 的最后一个字符。如果 $C$ 为空则不进行操作。 - 完成所有操作后,将 $C$ 作为 $f(A)$。 给定一个长度为 $N$ 的字符串 $S$,由 `1`、`2`、$\dots$、`9` 和 `B` 组成。现在要处理 $Q$ 个如下描述的查询,每个查询有两种类型: - $1\ x\ c$ :将 $S_x$ 更新为 $c$。($c$ 为 `1`、`2`、$\dots$、`9` 或 `B`) - $2\ l\ r$ :取 $S$ 的第 $l$ 到第 $r$ 个字符组成字符串 $T$,令 $U=f(T)$。如果 $U$ 为空串,输出 $-1$;否则,将 $U$ 视为十进制整数后对 $998244353$ 取余,输出结果。

输入格式

输入通过标准输入给出,格式如下,其中 $\mathrm{query}_i$ 表示第 $i$ 个查询: > $N$ $Q$ $S$ > $\mathrm{query}_1$ > $\mathrm{query}_2$ > $\vdots$ > $\mathrm{query}_Q$ 每个查询格式如下两种之一: > $1\ x\ c$ > $2\ l\ r$

输出格式

对于每个查询类型为 $2$ 的操作,按照题面要求用换行分隔依次输出答案。

说明/提示

### 样例解释 1 对于第一个查询,$T=U=567$,输出 $567$。 对于第三个查询,$T=U=1234567891$,输出 $1234567891 \bmod 998244353 = 236323538$。 对于第六个查询,$T=2BB$,$U$ 为空串,输出 $-1$。 ### 约束条件 - $1 \leq N \leq 8 \times 10^6$ - $1 \leq Q \leq 2 \times 10^5$ - $S$ 为长度为 $N$ 的字符串,仅包含 `1`、`2`、$\dots$、`9` 和 `B` - $1 \leq x \leq N$ - $c$ 为 `1`、`2`、$\dots$、`9` 或 `B` - $1 \leq l \leq r \leq N$ - $N, Q, x, l, r$ 都为整数。 由 ChatGPT 5 翻译