AT_abc455_e [ABC455E] Unbalanced ABC Substrings

题目描述

给定一个长度为 $N$ 的字符串 $S$,该字符串只包含字符 `A`、`B` 和 `C`。共有 $\frac{N(N+1)}{2}$ 个非空子串。请计算其中有多少个子串满足下述条件: - 子串中 `A`、`B`、`C` 出现的次数互不相同。 对于取自 $S$ 不同位置的相同字符串,按不同子串分别计数。 什么是子串?一个字符串 $S$ 的**子串**是指可以通过从开头删除若干个字符、从结尾删除若干个字符(可以为零)得到的字符串。例如,`AB` 是 `ABC` 的子串,而 `AC` 不是 `ABC` 的子串。

输入格式

输入从标准输入中给出,格式如下: > $N$ $S$

输出格式

输出满足条件的子串个数。

说明/提示

### 样例解释 1 从 $S$ 的开头删除 $0$ 个字符、末尾删除 $3$ 个字符,得到 `AAB`,满足条件。 从开头删除 $1$ 个字符、末尾删除 $2$ 个字符,得到 `ABB`,满足条件。 从开头删除 $2$ 个字符、末尾删除 $1$ 个字符,得到 `BBC`,满足条件。 从开头删除 $3$ 个字符、末尾删除 $0$ 个字符,得到 `BCC`,满足条件。 没有其他子串满足条件。 ### 样例解释 2 没有子串满足条件。 ### 数据范围 - $1 \leq N \leq 2 \times 10^5$ - $|S| = N$ - $N$ 为整数。 - $S$ 是一个仅由 `A`、`B`、`C` 组成的字符串。 由 ChatGPT 5 翻译