CF917A The Monster
题目描述
由于 Will 被困在了“颠倒世界”中,但他依然可以通过圣诞灯(他可以用意念控制灯的开关)与他的妈妈 Joyce 沟通。他不能直接告诉妈妈自己在哪里,因为带走他的怪兽会得知他的下落并将其转移。
因此,他想出了一个谜题来告诉妈妈他的坐标。他的坐标正是以下问题的答案。
只包含括号('(' 和 ')')的字符串被称为括号序列(bracket sequence)。某些括号序列称为正确括号序列。更正式地定义如下:
- 空字符串是正确括号序列。
- 如果 $s$ 是正确括号序列,那么 $ (s) $ 也是正确括号序列。
- 如果 $s$ 和 $t$ 是正确括号序列,那么 $st$($s$ 与 $t$ 的连接)也是正确括号序列。
只包含括号和问号('?')的字符串,被定义为“漂亮”(pretty),当且仅当存在一种方法,把每个问号替换成 '(' 或 ')',使得结果字符串成为非空的正确括号序列。
Will 通过圣诞灯用摩斯密码把一个只包含括号和问号的字符串 $s$ 传递给了妈妈。坐标即为满足 $1 \le l \le r \le |s|$ 的整数对 $(l, r)$ 的数量,使得子串 $s_{l} s_{l+1} \dots s_{r}$ 是漂亮的,其中 $s_{i}$ 表示 $s$ 的第 $i$ 个字符。
Joyce 对括号序列一无所知,所以她找到了你来帮忙。
输入格式
输入的唯一一行包含字符串 $s$,其仅由字符 '('、')' 和 '?' 组成($2 \le |s| \le 5000$)。
输出格式
输出 Will 谜题的答案,即符合条件的 $(l, r)$ 对的数量。
说明/提示
对于第一个样例测试,$s$ 的漂亮子串为:
1. "(?" 可以被转换为 "()"。
2. "?)" 可以被转换为 "()"。
3. "((?)" 可以被转换为 "(())"。
4. "(?))" 可以被转换为 "(())"。
对于第二个样例测试,$s$ 的漂亮子串为:
1. "??" 可以被转换为 "()"。
2. "()"。
3. "??()" 可以被转换为 "()()"。
4. "?()?" 可以被转换为 "(())"。
5. "??" 可以被转换为 "()"。
6. "()??" 可以被转换为 "()()"。
7. "??()??" 可以被转换为 "()()()"。
由 ChatGPT 5 翻译