#P12860. 括号匹配

括号匹配

括号匹配

Problem Description

本题中字符串下标从 11 开始。 对于字符串 SS,我们称 SS 的非空子串为其中连续一段字符构成的字符串。第 ll 个字符到第 rr 个字符(lr l\le r )构成的子串记作 S[lr] S \left[l\ldots r \right] 。 称非空字符串 SS回文串,当且仅当把所有字符的顺序翻转过来后 SS 保持不变。例如 ()() 不是回文串,而 ())( 是回文串。 称非空字符串 SS括号串,当且仅当 SS只有 () 且两种字符一样多,并且对于任意的 iiS[1i] S \left[ 1\ldots i \right] ( 的数量 不少于 )。例如 () 是括号串,而 ())(() 不是括号串。 给出一个字符串 SS,求 SS 有多少个子串 TT 同时满足:

  • TT 是回文串。
  • TT 中存在一个子串是括号串。 两个子串的下标范围不同,我们就认为两个子串不同。

Input

输入一行一个字符串 SS1S104 1\le |S|\le 10^4 SS 中仅含小写字母和小括号),含义同题目描述。

Output

输出一行一个自然数,表示答案。

Sample Input

()(a)a()(

Sample Output

4

Hint

()( 是回文子串,其中 () 是括号串。由于这个子串出现了两次,所以算两个子串。另外两个串分别是 )(a)a()()(a)a()(。 注意 (a)a( 也是回文子串,但是其中不包含子串是括号串,所以不计入答案。

Source

2025“钉耙编程”中国大学生算法设计暑期联赛(9)