CF1976D.Invertible Bracket Sequences

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

我们定义一个合法的括号序列,是仅由 ( 和 ) 构成的字符串且:

  1. 空串 ϵ\epsilon 是合法的括号序列。
  2. 若 ss 为合法的括号序列,则 (s)(s) 也为合法的括号序列。
  3. 若 s,ts,t 均为合法的括号序列,则 stst 也为合法的括号序列。(其中 stst 表示将字符串 ss 和 tt 拼接。)

定义对一个括号序列的翻转操作为:将这个括号序列的所有 ( 变为 ),所有 ) 变为 (。

如 ()((( 翻转后成为 )()))。

给定一个保证合法的字符串 ss。

你可以选择字符串 ss 的一个子串进行翻转操作。(注意是子串,与子序列区分,子串要求连续。)

问翻转了一个子串后得到的字符串 s′s' 仍然是合法括号序列的方案数。

输入格式

先是一个数字 tt 表示数据组数(1≤t≤1041 \le t \le 10^4)。

接下来 tt 行,每行一个合法括号序列 ss(1≤∑∣s∣≤2×1051 \le \sum |s| \le 2\times10^5)。

输出格式

对于每组数据,输出一个数字 xx,表示翻转 ss 的一个子串后仍然是合法括号序列的方案数。

输入输出样例

  • 输入#1

    4
    (())
    ()
    ()()()
    (()())(())

    输出#1

    1
    0
    3
    13

说明/提示

在本题中,不可以翻转长度为 00 的子串。

translate by Hoks。

输入解题思路,AI测评打分。不知道怎么写?

首页