AT_dwacon5th_final_d Parentheses Inversions
题目描述
ドワンゴ公司的员工ニワンゴ君非常喜欢括号匹配的字符串。今天,他决定通过重新排列许多括号来进行一场有趣的游戏。
他手里有一个长度为 $N$ 的字符串 $S$,这个字符串仅由 `(` 和 `)` 组成。在字符串 $S$ 中,`(` 和 `)` 的数量是相同的。
我们将满足以下条件的序列 $p$ 称为“好序列”:
- $p$ 是对 $1, 2, 3, \ldots, N$ 的一种排列
- 如果我们用 $t_i = s_{p_i}$ 构建字符串 $t$,那么 $t$ 必须是一个“平衡括号序列”
对于所有可能的好序列 $p$,我们要计算它们的逆序数之和,并对结果取模 $10^9 + 7$ 后输出。
其中,序列 $p$ 的逆序数定义为:满足条件 $p_i > p_j$ 的二元组 $(i, j)$ 的数量。平衡括号序列的定义如下:
1. 空字符串被认为是平衡括号序列。
2. 如果 $r$ 是一个平衡括号序列,那么形如 `(`, $r$, `)` 的字符串也是平衡括号序列。
3. 两个平衡括号序列连接起来形成的新字符串依然是平衡括号序列。
4. 只有通过上述规则生成的字符串才被称为平衡括号序列。
输入格式
输入由一行提供:
> $N$ $S$
输出格式
请输出符合条件的逆序数之和,并取模 $10^9 + 7$。
说明/提示
### 约束条件
- $2 \leq N \leq 5 \times 10^5$
- $S$ 仅包括字符 `(` 和 `)`
- 在 $S$ 中,`(` 和 `)` 的数量完全相同
- $|S| = N$
### 样例说明
例如,对于序列 $p$,可能的排列有 $(1, 2)$ 和 $(2, 1)$。对应的字符串 $t$ 分别是 `)(` 和 `()`。只有排列 $(2, 1)$ 是好序列,其逆序数为 $1$。
请记得在最终答案中对 $10^9 + 7$ 取模。
**本翻译由 AI 自动生成**