AT_arc194_d [ARC194D] Reverse Brackets

题目描述

满足以下任一条件的字符串定义为**合法括号序列**: - 空字符串 - 存在某个正确括号序列 $A$,将 `(`、$A$、`)` 按此顺序连接形成的字符串 - 存在非空的正确括号序列 $A$ 和 $B$,将 $A$ 和 $B$ 按此顺序连接形成的字符串 给定一个长度为 $N$ 的合法括号序列 $S$。你可以进行任意次以下操作: - 选择 $S$ 的一个连续子字符串(该子字符串本身必须是合法括号序列),将其 _反転_ 。 这里,将 $S$ 的第 $l$ 到第 $r$ 个字符组成的连续子字符串 _反転_ 的定义如下: - 对于满足 $l \leq i \leq r$ 的所有整数 $i$,同时将 $S_i$ 替换为:若 $S_{l+r-i}$ 是 `(` 则替换为 `)`,若 $S_{l+r-i}$ 是 `)` 则替换为 `(`。(注意:此处的 _反転_ 定义与通常的 _反转_ 不同) 请计算操作结束后可能存在的不同 $S$ 的数量,结果对 $998244353$ 取模。

输入格式

输入通过标准输入给出,格式如下: > $N$ $S$

输出格式

输出答案。

说明/提示

### 约束条件 - $1 \leq N \leq 5000$ - $|S|=N$ - $S$ 是正确括号序列 ### 样例解释 1 例如,通过以下操作可以将 $S$ 变为 `()(())`: - 选择 $S$ 的第 $1$ 到第 $6$ 个字符作为连续子字符串(这是一个合法括号序列)。此时 $S$ 变为 `()(())`。 其他可以生成的 $S$ 只有 `(())()`。因此答案为 $2$。 翻译由 DeepSeek R1 完成