AT_agc072_b.[AGC072B] AGC Language

NOI/NOI+/CTSC

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

AGC 语是指仅由相同数量的 A 和 C 组成,且任意前缀中 A 的数量都不少于一半的长度不少于 22 的字符串。现给定一个由 NN 个 A 和 NN 个 C 组成的 2N2N 长度的字符串 SS,请你针对 k=1,2,…,Kk = 1, 2, \dots, K 回答以下问题:

在黑板上写下 SS 重复 kk 次得到的字符串。你可以按以下顺序进行操作,使黑板上的字符串变为 AGC 语。

  1. 仅进行一次如下操作:
    • 选择整数 (l,r)(l, r),1≤l≤r≤2kN1 \leq l \leq r \leq 2kN,将字符串第 ll 到第 rr 个字符的子串反转。
  2. 可以进行零次或多次如下操作:
    • 交换字符串中相邻的两个字符。

请计算最少需要多少次交换操作。

前缀的定义为:字符串 YY 是字符串 XX 的前缀,当且仅当 1≤∣Y∣≤∣X∣1 \leq |Y| \leq |X|,且 XX 的前 ∣Y∣|Y| 个字符等于 YY。例如,ATC 是 ATCODER 的前缀,但 AGC 和 ATCODERGRANDCONTEST 都不是 ATCODER 的前缀。

输入格式

输入以如下格式从标准输入读入:

NN KK SS

输出格式

请输出 KK 行,第 ii 行输出当 k=ik = i 时的答案。

输入输出样例

  • 输入#1

    1 2
    AC

    输出#1

    0
    0
  • 输入#2

    5 1
    CACAAACCCA

    输出#2

    1
  • 输入#3

    10 10
    ACCCAAAACCCACCACAACA

    输出#3

    1
    2
    3
    3
    3
    3
    3
    3
    3
    3
  • 输入#4

    50 10
    ACCCCACAACAAAACCAACCCCACCAACACCAAAACACACAAAACCCCCACCAACACAACAACCCCAACAAACCCAACACACCCACACCAAACCCAAACA

    输出#4

    10
    17
    20
    22
    23
    24
    25
    26
    26
    26
  • 输入#5

    72 10
    CCCCACAAAAACCCACACCAAACCACCCCCAAAAACACCACCCCCAAAAAAACAAAAAACCCCCCACCCAAACAACACCACCACAAACCCAACCAACAACCCAAAACAACCCCACCACACACCACACCCACAAACACAACAACA

    输出#5

    28
    42
    51
    54
    57
    60
    63
    64
    65
    66

说明/提示

限制条件

  • 1≤N≤1 000 0001 \leq N \leq 1\,000\,000
  • 1≤K≤300 0001 \leq K \leq 300\,000
  • 字符串 SS 由 NN 个 A 和 NN 个 C 组成,长度为 2N2N
  • NN 和 KK 均为整数

样例解释 1

当 k=1k = 1 时,黑板上最初写下的字符串为 AC。当 k=2k = 2 时,最初写下的字符串为 ACAC。两种情况下,字符串本身就是 AGC 语,因此例如选择 (l,r)=(1,1)(l, r) = (1, 1),可以通过 00 次交换操作达成目标。

样例解释 2

当 k=1k = 1 时,黑板上写下的字符串为 CACAAACCCA。可以按以下步骤操作,仅需 11 次交换操作:

  1. 选择 (l,r)=(1,4)(l, r) = (1, 4),将第 11 到 44 个字符反转,得到字符串 ACACAACCCA。
  2. 交换第 99 个和第 1010 个字符,得到字符串 ACACAACCAC,这是一个 AGC 语。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页