Universal Cup Judging System

Universal Cup

حد الوقت: 4.0 s حد الذاكرة: 1024 MB مجموع النقاط: 100 الصعوبة: [عرض] قابلة للهجوم ✓
الإحصائيات

Multi-Heads Cup(줄여서 MHC)은 머리가 아주 많은 참가자들을 위해 열리는 전 세계적인 프로그래밍 대회입니다. 2023년, 이 대회의 심사위원장인 Little Cyan Fish는 여러 종류의 괄호를 사용하여 까다로운 인증 문제를 해결했습니다.

그때가 Little Cyan Fish가 머리가 아주 많은 참가자들을 처음 본 순간이었습니다. 그리고 이번에 Little Cyan Fish는 머리가 아주 많은 가장 친한 친구에게 또 다른 괄호 문제를 가져왔습니다. Little Cyan Fish는 손에 $n$가지 종류의 괄호를 가지고 있으며, 각 종류의 괄호는 여는 괄호와 닫는 괄호로 나뉩니다. 편의상 $L^i$는 $i$번째 종류의 여는 괄호를 나타내고, $R^i$는 $i$번째 종류의 닫는 괄호를 나타냅니다.

"이봐, 잊지 마," Little Cyan Fish는 생각했습니다. "내가 이전에 올바른 괄호 문자열이 무엇인지 소개해 주었잖아!" 당신이 올바른 괄호 문자열의 개념을 확실히 이해할 수 있도록, Little Cyan Fish는 올바른 괄호 문자열에 대한 다음과 같은 형식적 정의를 준비했습니다:

  • $\varepsilon$(빈 문자열)은 올바른 괄호 문자열이다.
  • $A$가 올바른 괄호 문자열이면, $(A)$도 올바른 괄호 문자열이다.
  • $A$와 $B$가 모두 올바른 괄호 문자열이면, $AB$도 올바른 괄호 문자열이다.

예를 들어, "()", "()()", "(())"는 올바른 괄호 문자열이지만, ")(", "(", "))"는 그렇지 않습니다.

problem_18006_c94506411d8fcb12ebc396edd1eb34bd.png

이제 Little Cyan Fish는 $n$가지 종류의 괄호를 포함하는 길이 $n$인 괄호 문자열 $S$를 당신에게 줍니다. 안타깝게도 Little Cyan Fish는 일부 위치에 있는 괄호의 종류를 잊어버렸고, 해당 위치에 있는 괄호의 방향도 잊어버렸습니다. 이 위치들에 대한 기억은 흐릿해져서 Little Cyan Fish에 의해 ?로 표시되었습니다.

Little Cyan Fish는 모든 $1 \le l \le r \le n$에 대해, 부분 문자열 $S[l \dots r]$에 대응하는 쌍 $(l, r)$ 중 ?를 어느 방향의 어느 종류의 괄호로 채우는 방법이 존재하여 각 $1 \le i \le n$마다 다음 조건을 만족하는 쌍이 몇 개인지 매우 궁금합니다:

  • 종류 $i$의 모든 괄호(즉, 모든 $L^i$와 $R^i$)를 추출했을 때, 결과로 나오는 괄호 문자열($i$번째 종류의 괄호만 포함)이 올바른 괄호 문자열이다.

예를 들어, "()"로 첫 번째 종류의 괄호를 나타내고 "[]"로 두 번째 종류의 괄호를 나타낸다면, 괄호 문자열 ([?)는 ?를 ]로 바꿀 수 있으므로 위 조건을 만족합니다. (?)] 또한 ?를 [로 바꿀 수 있으므로 위 조건을 만족합니다.

Little Cyan Fish는 모든 유효한 쌍 $(l, r)$의 개수를 계산하기를 원합니다.

입력

여러 개의 테스트 케이스가 주어집니다. 입력의 첫 번째 줄에는 테스트 케이스의 개수를 나타내는 단일 정수 $T$ ($1 \le T$)가 포함됩니다.

각 테스트 케이스에 대해, 입력의 첫 번째 줄에는 괄호 문자열의 길이를 나타내는 정수 $n$ ($1 \le n \le 2 \times 10^5$)이 포함됩니다.

다음 줄에는 $n$개의 정수 $x_1, x_2, \dots, x_n$ ($-n \le x_i \le n$)이 포함됩니다. 이 $n$개의 정수는 괄호 문자열의 정보를 설명하며, 다음과 같습니다:

  • $x_i > 0$이면, $i$번째 위치는 $x_i$번째 종류의 여는 괄호(즉, $L^{x_i}$)를 나타냅니다.
  • $x_i < 0$이면, $i$번째 위치는 $-x_i$번째 종류의 닫는 괄호(즉, $R^{-x_i}$)를 나타냅니다.
  • $x_i = 0$이면, Little Cyan Fish가 이 위치의 정보를 잊어버렸음(즉, ?)을 의미합니다.

모든 테스트 케이스에서 $n$의 합은 $2 \times 10^5$을 초과하지 않음이 보장됩니다.

출력

각 테스트 케이스에 대해, 답을 나타내는 정수 하나를 포함하는 한 줄을 출력합니다.

예제

입력 1

4
4
1 2 -1 -2
4
1 0 -2 0
6
1 2 3 -3 -2 -1
8
1 0 0 3 0 0 0 -2

출력 1

1
3
3
14

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.