AT_agc072_b [AGC072B] AGC Language

题目描述

AGC 语是指仅由相同数量的 `A` 和 `C` 组成,且任意前缀中 `A` 的数量都不少于一半的长度不少于 $2$ 的字符串。现给定一个由 $N$ 个 `A` 和 $N$ 个 `C` 组成的 $2N$ 长度的字符串 $S$,请你针对 $k = 1, 2, \dots, K$ 回答以下问题: > 在黑板上写下 $S$ 重复 $k$ 次得到的字符串。你可以按以下顺序进行操作,使黑板上的字符串变为 AGC 语。 > > 1. 仅进行**一次**如下操作: > - 选择整数 $(l, r)$,$1 \leq l \leq r \leq 2kN$,将字符串第 $l$ 到第 $r$ 个字符的子串反转。 > 2. 可以进行**零次或多次**如下操作: > - 交换字符串中相邻的两个字符。 > > 请计算最少需要多少次交换操作。 前缀的定义为:字符串 $Y$ 是字符串 $X$ 的前缀,当且仅当 $1 \leq |Y| \leq |X|$,且 $X$ 的前 $|Y|$ 个字符等于 $Y$。例如,`ATC` 是 `ATCODER` 的前缀,但 `AGC` 和 `ATCODERGRANDCONTEST` 都不是 `ATCODER` 的前缀。

输入格式

输入以如下格式从标准输入读入: > $N$ $K$ $S$

输出格式

请输出 $K$ 行,第 $i$ 行输出当 $k = i$ 时的答案。

说明/提示

### 限制条件 - $1 \leq N \leq 1\,000\,000$ - $1 \leq K \leq 300\,000$ - 字符串 $S$ 由 $N$ 个 `A` 和 $N$ 个 `C` 组成,长度为 $2N$ - $N$ 和 $K$ 均为整数 ### 样例解释 1 当 $k = 1$ 时,黑板上最初写下的字符串为 `AC`。当 $k = 2$ 时,最初写下的字符串为 `ACAC`。两种情况下,字符串本身就是 AGC 语,因此例如选择 $(l, r) = (1, 1)$,可以通过 $0$ 次交换操作达成目标。 ### 样例解释 2 当 $k = 1$ 时,黑板上写下的字符串为 `CACAAACCCA`。可以按以下步骤操作,仅需 $1$ 次交换操作: 1. 选择 $(l, r) = (1, 4)$,将第 $1$ 到 $4$ 个字符反转,得到字符串 `ACACAACCCA`。 2. 交换第 $9$ 个和第 $10$ 个字符,得到字符串 `ACACAACCAC`,这是一个 AGC 语。 由 ChatGPT 4.1 翻译