CF1886D Monocarp and the Set

题目描述

Monocarp 有 $n$ 个数字 $1, 2, \dots, n$ 和一个集合(初始为空)。他以某种顺序将这些数字依次加入集合中,每次加入一个新的、之前未出现过的数字。换句话说,加入数字的序列是 $1$ 到 $n$ 的一个排列。 每当 Monocarp 往集合中加入一个元素(除了第一次)时,他会写下一个字符: - 如果当前加入的元素成为集合中的最大值,Monocarp 写下字符 $>$; - 如果当前加入的元素成为集合中的最小值,Monocarp 写下字符 $

输入格式

第一行包含两个整数 $n$ 和 $m$($2 \le n \le 3 \cdot 10^5$;$1 \le m \le 3 \cdot 10^5$)。 第二行包含字符串 $s$,长度恰好为 $n-1$,只包含字符 $$ 和 $?$。 接下来 $m$ 行,每行一个查询,包含一个整数 $i$ 和一个字符 $c$($1 \le i \le n-1$;$c$ 为 $$ 或 $?$)。

输出格式

在处理所有查询之前以及每次查询后,输出一个整数,表示有多少种排列方式,使得 Monocarp 按这种顺序插入数字后,得到的字符串正好是 $s$。每个答案对 $998244353$ 取模。

说明/提示

在第一个样例中,初始时有三种可能的排列: - $3, 1, 2, 5, 4, 6$; - $4, 1, 2, 5, 3, 6$; - $4, 1, 3, 5, 2, 6$。 在最后一个查询后,只剩下一种可能的排列: - $3, 5, 4, 6, 2, 1$。 由 ChatGPT 4.1 翻译