#aBC246EX. [ABC246Ex] 01? Queries

[ABC246Ex] 01? Queries

AT_abc246_h [ABC246Ex] 01? Queries

题目描述

给定一个只包含 01? 的长度为 NN 的字符串 SS

此外,给定 QQ 个查询 (x1,c1),(x2,c2),,(xQ,cQ)(x_1, c_1), (x_2, c_2), \ldots, (x_Q, c_Q)
其中,对于 i=1,2,,Qi = 1, 2, \ldots, Qxix_i 是满足 1xiN1 \leq x_i \leq N 的整数,cic_i01? 中的任意一个字符。

请依次对每个查询 (xi,ci)(x_i, c_i) 执行以下操作:

  1. 首先,将 SS 的第 xix_i 个字符(从前往后数)修改为 cic_i
  2. 然后,输出将 SS 中所有的 ? 独立地替换为 01 后,所有可能得到的字符串的(不一定连续的)子序列中,所有可能出现的非空字符串的个数,结果对 998244353998244353 取模。

输入格式

输入按以下格式从标准输入给出。

NN QQ
SS
x1x_1 c1c_1
x2x_2 c2c_2
\vdots
xQx_Q cQc_Q

输出格式

输出 QQ 行。对于 i=1,2,,Qi = 1, 2, \ldots, Q,第 ii 行输出第 ii 个查询 (xi,ci)(x_i, c_i) 的答案(即上述操作 2 中的字符串个数对 998244353998244353 取模的结果)。

输入输出样例 #1

输入 #1

3 3
100
2 1
2 ?
3 ?

输出 #1

5
7
10

输入输出样例 #2

输入 #2

40 10
011?0??001??10?0??0?0?1?11?1?00?11??0?01
5 0
2 ?
30 ?
7 1
11 1
3 1
25 1
40 0
12 1
18 1

输出 #2

746884092
532460539
299568633
541985786
217532539
217532539
217532539
573323772
483176957
236273405

说明/提示

限制条件

  • 1N,Q1051 \leq N, Q \leq 10^5
  • N,QN, Q 为整数
  • SS 是只包含 01? 的长度为 NN 的字符串
  • 1xiN1 \leq x_i \leq N
  • cic_i01? 中的任意一个字符

样例解释 1

  • 第 1 个查询后,S=110S = 110。作为 S=110S = 110 的子序列可能出现的字符串有:011011110,共 55 个。因此,第 1 个查询的答案为 55
  • 第 2 个查询后,S=1?0S = 1?0。将 ? 替换为 01 后得到的字符串为 100110,它们的所有子序列可能出现的字符串有:01001011100110,共 77 个。因此,第 2 个查询的答案为 77
  • 第 3 个查询后,S=1??S = 1??。将两个 ? 替换为 01 后得到的字符串为 100101110111,它们的所有子序列可能出现的字符串有:0100011011100101110111,共 1010 个。因此,第 3 个查询的答案为 1010

样例解释 2

请注意,答案需要对 998244353998244353 取模。

由 ChatGPT 4.1 翻译