P12550 [UOI 2025] Reversal ABC

题目描述

给定一个由字符 $\texttt{A}$、$\texttt{B}$ 和 $\texttt{C}$ 组成的字符串 $s$。 每次操作中,你可以选择字符串中两个**相邻**的元素 $s_is_{i+1}$,且它们的顺序为以下之一:$\texttt{AB}$、$\texttt{BC}$ 或 $\texttt{CA}$,然后交换它们的位置。 求可以对字符串 $s$ 进行的最大连续操作次数。 本题每个测试包含多组输入数据,你需要分别独立处理每组数据。

输入格式

第一行包含一个整数 $T$ $(1\le T\le 10^5)$ —— 输入数据的组数。接下来是各组数据的描述。 每组数据的第一行包含一个整数 $n$ $(1 \le n \le 10^6)$ —— 字符串 $s$ 的长度。 每组数据的第二行包含一个长度为 $n$ 的字符串 $s$,由字符 $\texttt{A}$、$\texttt{B}$ 和 $\texttt{C}$ 组成。 保证单个测试中所有数据的 $n$ 之和不超过 $10^6$。

输出格式

对于每组数据,输出一行一个整数 —— 可以对字符串 $s$ 进行的最大连续操作次数。

说明/提示

在第一个样例的第一组数据中,字符串 $\texttt{ABCCA}$ 最多可以进行 $3$ 次连续操作。其中一种可能的操作序列是:$[\texttt{ABCCA} \rightarrow \texttt{BACCA}, \texttt{BACCA} \rightarrow \texttt{BACAC}, \texttt{BACAC} \rightarrow \texttt{BAACC}]$。 ### 评分标准 设 $K$ 为单个测试中所有数据的 $n$ 之和。 - ($2$ 分):答案为 $0$ 或 $1$; - ($3$ 分):$n \le 3$; - ($5$ 分):对于所有 $1 \le i \le n$,$s_i \ne \texttt{C}$; - ($5$ 分):$s$ 的形式为 $\texttt{AA}\ldots \texttt{AABB}\ldots \texttt{BBCC}\ldots \texttt{CC}$(即 $x \cdot \texttt{A} + y \cdot \texttt{B} + z \cdot \texttt{C}$,其中 $x$、$y$、$z$ 为正整数); - ($9$ 分):对于所有 $1 \le i < n$,$s_is_{i+1} \ne \texttt{CA}$; - ($10$ 分):$T = 1$,$n \le 12$; - ($8$ 分):$n \le 12$; - ($28$ 分):$K \le 2000$; - ($30$ 分):无额外限制。 翻译由 DeepSeek V3 完成