专栏文章

ABC 434 G

个人记录参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mimxq7ry
此快照首次捕获于
2025/12/01 17:16
3 个月前
此快照最后确认于
2025/12/01 17:16
3 个月前
查看原文
题目描述:
对于一个由字符 1, 2, …, 9 和 B 组成的字符串 A,定义函数 f(A) 为通过以下过程得到的字符串:
初始时,设 C 为一个空字符串。
按顺序处理 A 中的每个字符(i = 1, 2, …, |A|):
如果当前字符 A_i 是 1 到 9 之间的某个数字,则将该字符添加到 C 的末尾。
如果当前字符 A_i 是 B,则删除 C 的最后一个字符。但如果 C 为空字符串,则不进行任何操作。
完成所有上述操作后,将最终的 C 定义为 f(A)。
现给定一个长度为 N 的字符串 S,由 1, 2, …, 9 和 B 组成。 需要处理 Q 个查询,每个查询为以下两种类型之一:
更新操作:1 x c
将 S 中第 x 个字符更新为 c。(其中 c 是 1, 2, …, 9 或 B。)
询问操作:2 l r
令 T 为从 S 中提取第 l 到第 r 个字符形成的子串。
计算 U = f(T)。
如果 U 是空字符串,输出 -1;否则,将 U 视为一个十进制整数,输出该整数除以 998244353 的余数。
约束条件:
1 ≤ N ≤ 8 × 10^6
1 ≤ Q ≤ 2 × 10^5
S 是长度为 N 的字符串,仅包含 1, 2, …, 9 和 B。
1 ≤ x ≤ N
c 是 1, 2, …, 9 或 B。
1 ≤ l ≤ r ≤ N
所有输入值(N, Q, x, l, r)均为整数。
输入格式:
第一行:N 和 Q
第二行:字符串 S
接下来 Q 行:每行一个查询,格式为 1 x c 或 2 l r
输出格式:
对于每个类型 2 的查询,按题目要求输出一行答案。
CPP
10 12
1234567891
2 5 7
2 2 8
2 1 10
1 3 B
1 4 B
2 2 4
2 2 8
2 1 10
1 7 B
2 3 9
1 3 4
2 1 10

567
2345678
236323538
-1
5678
567891
589
125891
注意: 在第一个样例查询中,T = U = "567",因此输出 567。
在第三个样例查询中,T = U = "1234567891",输出 1234567891 mod 998244353 = 236323538。
在第六个样例查询中,T = "2BB",U 为空字符串,因此输出 -1。
题解:https://atcoder.jp/contests/abc434/editorial/14687

评论

0 条评论,欢迎与作者交流。

正在加载评论...