CF1750E.Bracket Cost

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

Daemon Targaryen decided to stop looking like a Metin2 character. He turned himself into the most beautiful thing, a bracket sequence.

For a bracket sequence, we can do two kind of operations:

  • Select one of its substrings ^\dagger and cyclic shift it to the right. For example, after a cyclic shift to the right, "(())" will become ")(()";
  • Insert any bracket, opening '(' or closing ')', wherever you want in the sequence.

We define the cost of a bracket sequence as the minimum number of such operations to make it balanced ^\ddagger .

Given a bracket sequence ss of length nn , find the sum of costs across all its n(n+1)2\frac{n(n+1)}{2} non-empty substrings. Note that for each substring we calculate the cost independently.

^\dagger A string aa is a substring of a string bb if aa can be obtained from bb by deletion of several (possibly, zero or all) characters from the beginning and several (possibly, zero or all) characters from the end.

^\ddagger A sequence of brackets is called balanced if one can turn it into a valid math expression by adding characters ++ and 11 . For example, sequences "(())()", "()", and "(()(()))" are balanced, while ")(", "(()", and "(()))(" are not.

输入格式

Each test consists of multiple test cases. The first line contains a single integer tt ( 1t1051 \leq t \leq 10^5 ) — the number of test cases. The description of test cases follows.

The first line of each test case contains a single integer nn ( 1n21051 \le n \le 2 \cdot 10^5 ) — the length of the bracket sequence.

The second line of each test case contains a string ss , consisting only of characters '(' and ')', of length nn — the bracket sequence.

It is guaranteed that sum of nn across all test cases does not exceed 21052 \cdot 10^5 .

输出格式

For each test case, print a single integer — the sum of costs of all substrings of ss .

输入输出样例

  • 输入#1

    5
    1
    )
    4
    )()(
    3
    ())
    5
    (((((
    10
    )(())))())

    输出#1

    1
    9
    6
    35
    112

说明/提示

In the first test case, there is the only substring ")". Its cost is 11 because we can insert '(' to the beginning of this substring and get a string "()", that is a balanced string.

In the second test case, the cost of each substring of length one is 11 . The cost of a substring ")(" is 11 because we can cyclically shift it to right and get a string "()". The cost of strings ")()" and "()(" is 11 because its enough to insert one bracket to each of them. The cost of substring ")()(" is 11 because we can cyclically shift it to right and get a string "()()". So there are 4+2+2+1=94 + 2 + 2 + 1 = 9 substring of cost 11 and 11 substring of cost 00 . So the sum of the costs is 99 .

In the third test case,

  • "(", the cost is 11 ;
  • "()", the cost is 00 ;
  • "())", the cost is 11 ;
  • ")", the cost is 11 ;
  • "))", the cost is 22 ;
  • ")", the cost is 11 .

So the sum of the costs is 66 .

首页