#L3995. 「CSP-S 2023」消消乐

「CSP-S 2023」消消乐

题目描述

小 L 正在玩一个低配版本的一维消消乐,游戏规则是:一次只能消除两个相邻的相同元素。

对于一个长度为 nn 且仅由小写字母构成的字符串,若可以通过若干次操作(每次删除两个相邻的相同字符,操作后剩余字符串自动拼接)将其变为空字符串,则称该字符串是可消除的

小 L 想知道,该字符串的所有非空连续子串中,有多少个是可消除的。

输入格式

从文件 game.in 中读入数据。

输入的第一行包含一个正整数 nn,表示字符串的长度。

第二行包含一个长度为 nn 且仅由小写字母构成的字符串。

输出格式

输出到文件 game.out 中。

输出一行一个整数,表示可消除的非空连续子串的个数。

样例 1

输入

88 accabccb

输出

55

样例 1 解释

可消除的子串有:

  • 位置 232\sim3cc\texttt{cc}
  • 位置 141\sim4acca\texttt{acca}(消除顺序:ccaa\texttt{cc} \to \texttt{aa} \to 空)
  • 位置 676\sim7cc\texttt{cc}
  • 位置 585\sim8bccb\texttt{bccb}(消除顺序:ccbb\texttt{cc} \to \texttt{bb} \to 空)
  • 位置 181\sim8accabccb\texttt{accabccb}(整体可消除)

55 个,因此输出 55

样例 2

见附件中的 game2.in 与 game2.ans。

样例 3

见附件中的 game3.in 与 game3.ans。

样例 4

见附件中的 game4.in 与 game4.ans。

数据范围与提示

对于所有测试数据,1n2×1061 \le n \le 2 \times 10^6,字符串仅由小写字母构成。

测试点编号 nn \leq 特殊性质
151 \sim 5 1010
676 \sim 7 800800
8108 \sim 10 80008000
111211 \sim 12 2×1052 \times 10^5 A
131413 \sim 14 B
151715 \sim 17
182018 \sim 20 2×1062 \times 10^6

其中,特殊性质说明:

  • 特殊性质 A:字符串中每个字符独立等概率地从小写字母集中选择。
  • 特殊性质 B:字符串仅由 a\texttt{a}b\texttt{b} 构成。