AT_joi2021_yo2_b.パンケーキ (Pancake)

通过率:0%

AC君温馨提醒

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

题目描述

ビ太郎在一家煎饼店工作。

这家店里最受欢迎的菜单是一座由 NN 个煎饼叠成的煎饼塔。店中供应的煎饼有三种口味,分别是 A、B 和 C。

如果煎饼的排列满足以下条件,我们就称其为好的煎饼塔:

  • 所有 A 口味的煎饼必须位于 B 口味煎饼之上。
  • 所有 A 口味的煎饼必须位于 C 口味煎饼之上。
  • 所有 B 口味的煎饼必须位于 C 口味煎饼之上。

例如,若从上到下口味依次为 AABBBC、ACC、BBBB 的煎饼塔都符合是好煎饼塔的条件,但 AABABCC 和 CA 则不符合。

ビ太郎可以对煎饼塔进行以下操作:

  • 操作 kk (2≦k≦N2 \leqq k \leqq N):将铲子插入第 kk 个煎饼下,翻转其上方的所有煎饼,即从上到下前 kk 个煎饼的顺序被反转。

例如,若煎饼塔的顺序为 ABCB,通过执行操作 22、操作 33 和操作 44,其顺序将变为 BACB、CBAB 和 BCBA。

现在有 QQ 盘煎饼塔,给出每一盘煎饼从上到下的口味顺序为字符串 Si,1Si,2⋯Si,NS_{i,1}S_{i,2}\cdots S_{i,N}。ビ太郎想通过尽量少的操作次数,让每一盘煎饼塔都变为好煎饼塔。

请编写程序,计算每一盘煎饼塔变为好煎饼塔所需的最少操作次数。

输入格式

输入数据从标准输入中获取:

NN QQ
S1S_1
S2S_2
⋮\vdots
SQS_Q

其中,SiS_i (1≦i≦Q1 \leqq i \leqq Q) 是长度为 NN 的字符串,表示第 ii 盘煎饼塔的口味顺序。

输出格式

输出结果到标准输出,每行表示一盘煎饼塔变为好煎饼塔所需的最少操作次数。

输入输出样例

  • 输入#1

    5 3
    ABCBA
    CCBAB
    AAAAA

    输出#1

    3
    2
    0
  • 输入#2

    2 5
    AC
    AC
    AC
    AC
    AC

    输出#2

    0
    0
    0
    0
    0
  • 输入#3

    13 1
    ABCCABCBACBAA

    输出#3

    9
  • 输入#4

    13 4
    CCAAACBAAAABB
    BBBCCBCCCBCBC
    CCCAAAABBBBBB
    AABCBCACBACBA

    输出#4

    4
    6
    2
    10

说明/提示

  • 2≦N≦132 \leqq N \leqq 13。
  • 1≦Q≦100,0001 \leqq Q \leqq 100,000。
  • Si,jS_{i,j} 是 A、B,或 C (1≦i≦Q1 \leqq i \leqq Q,1≦j≦N1 \leqq j \leqq N)。

子任务

  1. (44 分) N≦5N \leqq 5,Q=1Q = 1。
  2. (1010 分) N≦5N \leqq 5。
  3. (6060 分) Q=1Q = 1。
  4. (2626 分) 无其他约束。

样例解释

  1. 对于第 1 盘煎饼塔,经过以下 3 次操作可以变为好煎饼塔:

    • 操作 4 后顺序为 BCBAA。
    • 操作 2 后顺序为 CBBAA。
    • 操作 5 后顺序为 AABBC。

    通过 22 次或更少的操作无法达成,因此输出 33。

  2. 对于第 2 盘煎饼塔,以下 2 次操作即可:

    • 操作 5 后顺序为 BABCC。
    • 操作 2 后顺序为 ABBCC。

    不能通过 1 次或更少的操作实现,因此输出 22。

  3. 第 3 盘煎饼塔已经是好煎饼塔,无需操作,因此输出 00。

注意,有可能存在多盘煎饼塔的初始顺序相同的情况。

本翻译由 AI 自动生成

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

首页