Universal Cup Judging System

Universal Cup

Time Limit: 4.0 s Memory Limit: 1024 MB Total points: 100 Difficulty: [show] Hackable ✓
Statistics

La Multi-Heads Cup, ou MHC en abrégé, est un concours mondial de programmation conçu pour les participants ayant beaucoup, beaucoup de têtes. En 2023, le juge en chef de cet événement, Little Cyan Fish, a résolu un problème d'authentification délicat en utilisant de nombreux types de parenthèses.

C'était la première fois que Little Cyan Fish voyait des concurrents avec beaucoup, beaucoup de têtes. Et cette fois-ci, Little Cyan Fish apporte un autre problème de parenthèses à son meilleur ami qui a beaucoup, beaucoup de têtes. Little Cyan Fish a $n$ types de parenthèses entre les mains, et chaque type de parenthèse est divisé en parenthèses ouvrantes et parenthèses fermantes. Par commodité, nous utilisons $L^i$ pour désigner le $i$-ème type de parenthèse ouvrante, et $R^i$ pour désigner le $i$-ème type de parenthèse fermante.

« Hé, n'oublie pas, » pensa Little Cyan Fish, « je t'ai déjà présenté ce qu'est une séquence de parenthèses équilibrée auparavant ! » Pour s'assurer que vous comprenez le concept de séquence de parenthèses équilibrée, Little Cyan Fish a préparé la définition formelle suivante d'une séquence de parenthèses équilibrée :

  • $\varepsilon$ (une chaîne vide) est une séquence de parenthèses équilibrée.
  • Si $A$ est une séquence de parenthèses équilibrée, $(A)$ est aussi une séquence de parenthèses équilibrée.
  • Si $A$ et $B$ sont des séquences de parenthèses équilibrées, alors $AB$ est aussi une séquence de parenthèses équilibrée.

Par exemple, « () », « ()() » et « (()) » sont des séquences de parenthèses équilibrées, mais « )( », « ( » et « )) » ne le sont pas.

problem_18006_c94506411d8fcb12ebc396edd1eb34bd.png

Maintenant, Little Cyan Fish vous donne une séquence de parenthèses $S$ de longueur $n$, contenant $n$ types de parenthèses. Malheureusement, Little Cyan Fish a oublié les types de parenthèses à certaines positions, et a également oublié les directions des parenthèses à ces positions. Le souvenir de ces positions est devenu flou et est représenté par ? par Little Cyan Fish.

Little Cyan Fish est très curieux de savoir, pour tous $1 \le l \le r \le n$, combien de paires $(l, r)$ correspondent à des sous-chaînes $S[l \dots r]$ telles qu'il existe une façon de remplacer chaque ? par un certain type de parenthèse dans une certaine direction, de sorte que pour chaque $1 \le i \le n$, on ait :

  • En extrayant toutes les parenthèses de type $i$ (c'est-à-dire tous les $L^i$ et $R^i$), la séquence de parenthèses résultante (ne contenant que le $i$-ème type de parenthèse) est une séquence de parenthèses équilibrée.

Par exemple, si nous utilisons « () » pour désigner le premier type de parenthèse et « [] » pour désigner le deuxième type de parenthèse, la chaîne de parenthèses ([?) satisfait la condition ci-dessus, car nous pouvons remplacer ? par ]. (?)] satisfait également la condition ci-dessus, car nous pouvons remplacer ? par [.

Little Cyan Fish veut que vous calculiez le nombre de toutes les paires $(l, r)$ valides.

Entrée

Il y a plusieurs cas de test. La première ligne de l'entrée contient un seul entier $T$ ($1 \le T$), indiquant le nombre de cas de test.

Pour chaque cas de test, la première ligne de l'entrée contient un entier $n$ ($1 \le n \le 2 \times 10^5$), indiquant la longueur de la chaîne de parenthèses.

La ligne suivante contient $n$ entiers $x_1, x_2, \dots, x_n$ ($-n \le x_i \le n$). Ces $n$ entiers décrivent les informations de la chaîne de parenthèses, où :

  • Si $x_i > 0$, alors la $i$-ème position représente le $x_i$-ème type de parenthèse ouvrante (c'est-à-dire $L^{x_i}$).
  • Si $x_i < 0$, alors la $i$-ème position représente le $-x_i$-ème type de parenthèse fermante (c'est-à-dire $R^{-x_i}$).
  • Si $x_i = 0$, cela signifie que Little Cyan Fish a oublié l'information à cette position (c'est-à-dire ?).

Il est garanti que la somme de $n$ sur tous les cas de test ne dépasse pas $2 \times 10^5$.

Sortie

Pour chaque cas de test, affichez une seule ligne contenant un entier, indiquant la réponse.

Exemple

Entrée 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

Sortie 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.