AT_tupc2023_p Sub Brackets
题目描述
给定一个长度为 $N$ 仅由 `(` 和 `)` 组成的字符串 $S$,现有 $M$ 个条件,对于每个条件 $i\ (1 \leq i \leq M)$,问最多能满足多少个条件。
每个条件 $i$ :取出 $S$ 的第 $L_i$ 个字符到第 $R_i$ 个字符组成的子串,该子串是一个匹配的括号序列。
这里,匹配的括号序列定义如下:
- 空字符串;
- 存在两个非空匹配的括号序列 $s, t$,将 $s, t$ 依次连接后得到的字符串;
- 存在匹配的括号序列 $s$,则 `(` 、$s$、`)` 依次连接得到的字符串。
输入格式
输入通过标准输入给出,格式如下:
> $N\ M$
> $L_1\ R_1$
> $L_2\ R_2$
> $\vdots$
> $L_M\ R_M$
输出格式
输出满足条件的最大个数。
说明/提示
### 样例解释 1
当 $S=$ `(()()` 时,第 1 个条件不满足,但第 2、3 个条件满足。
不存在能够同时满足全部 3 个条件的 $S$,因此最多能满足 $2$ 个条件。
注意,$S$ 本身不必是匹配的括号序列。
### 样例解释 2
条件可能有重复。
### 数据范围
- $2 \leq N \leq 500$
- $1 \leq M \leq 500$
- $1 \leq L_i < R_i \leq N\ (1 \leq i \leq M)$
- $R_i - L_i + 1$ 为偶数
- 输入均为整数
由 ChatGPT 5 翻译