AT_agc071_b [AGC071B] Maximum Bracket Subsequence
题目描述
[problemUrl]: https://atcoder.jp/contests/agc071/tasks/agc071_b
给定整数 $N, K$ 以及一个由 `(` 和 `)` 组成的长度为 $K$ 的合法括号序列 $S$。
请统计满足以下所有条件的长度为 $N$ 的 `(` 和 `)` 组成的字符串 $T$ 的数量,结果对 $998244353$ 取模:
- $T$ 中存在一个长度为 $K$ 的合法括号子序列
- 在 $T$ 的所有长度为 $K$ 的合法括号子序列中,字典序最大的那个等于 $S$
此处定义 `(` 的字典序小于 `)`。
**合法括号序列的定义**
合法括号序列是指可以通过 $0$ 次或多次删除 `()` 这样的子串最终得到空字符串的序列。
**子序列的定义**
字符串 $S$ 的子序列是指通过删除 $S$ 中 $0$ 个或多个字符(不改变剩余字符顺序)得到的字符串。
**字典序的定义**
字符串 $S = S_1S_2\ldots S_{|S|}$ 比字符串 $T = T_1T_2\ldots T_{|T|}$ **字典序小**,当且仅当满足以下任一条件(其中 $|S|, |T|$ 分别表示字符串 $S, T$ 的长度):
1. $|S| < |T|$ 且 $S_1S_2\ldots S_{|S|} = T_1T_2\ldots T_{|S|}$。
2. 存在整数 $1 \leq i \leq \min\{ |S|, |T| \}$ 满足:
- $S_1S_2\ldots S_{i-1} = T_1T_2\ldots T_{i-1}$
- $S_i$ 的字典序小于 $T_i$
输入格式
输入从标准输入按以下格式给出:
> $N$ $K$ $S$
输出格式
输出答案。
说明/提示
### 约束条件
- $K \leq N \leq 10^7$
- $2 \leq K \leq 5 \times 10^5$
- $N, K$ 为整数
- $S$ 是由 `(` 和 `)` 组成的长度为 $K$ 的合法括号序列
### 样例解释 #1
例如当 $T=$ `((())))` 时,$T$ 中长度 $4$ 的合法括号子序列只有 `(())`,这与 $S$ 相等,因此满足条件。
当 $T=$ `((())()` 时,$T$ 中存在两个长度 $4$ 的合法括号子序列 `()()` 和 `(())`,其中字典序最大的 `()()` 不等于 $S$,因此不满足条件。
翻译由 DeepSeek R1 完成