AT_joi2021_yo2_b.パンケーキ (Pancake)
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
ビ太郎在一家煎饼店工作。
这家店里最受欢迎的菜单是一座由 N 个煎饼叠成的煎饼塔。店中供应的煎饼有三种口味,分别是 A、B 和 C。
如果煎饼的排列满足以下条件,我们就称其为好的煎饼塔:
- 所有
A口味的煎饼必须位于B口味煎饼之上。 - 所有
A口味的煎饼必须位于C口味煎饼之上。 - 所有
B口味的煎饼必须位于C口味煎饼之上。
例如,若从上到下口味依次为 AABBBC、ACC、BBBB 的煎饼塔都符合是好煎饼塔的条件,但 AABABCC 和 CA 则不符合。
ビ太郎可以对煎饼塔进行以下操作:
- 操作 k (2≦k≦N):将铲子插入第 k 个煎饼下,翻转其上方的所有煎饼,即从上到下前 k 个煎饼的顺序被反转。
例如,若煎饼塔的顺序为 ABCB,通过执行操作 2、操作 3 和操作 4,其顺序将变为 BACB、CBAB 和 BCBA。
现在有 Q 盘煎饼塔,给出每一盘煎饼从上到下的口味顺序为字符串 Si,1Si,2⋯Si,N。ビ太郎想通过尽量少的操作次数,让每一盘煎饼塔都变为好煎饼塔。
请编写程序,计算每一盘煎饼塔变为好煎饼塔所需的最少操作次数。
输入格式
输入数据从标准输入中获取:
N Q
S1
S2
⋮
SQ
其中,Si (1≦i≦Q) 是长度为 N 的字符串,表示第 i 盘煎饼塔的口味顺序。
输出格式
输出结果到标准输出,每行表示一盘煎饼塔变为好煎饼塔所需的最少操作次数。
输入输出样例
输入#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≦13。
- 1≦Q≦100,000。
- Si,j 是
A、B,或C(1≦i≦Q,1≦j≦N)。
子任务
- (4 分) N≦5,Q=1。
- (10 分) N≦5。
- (60 分) Q=1。
- (26 分) 无其他约束。
样例解释
-
对于第 1 盘煎饼塔,经过以下 3 次操作可以变为好煎饼塔:
- 操作 4 后顺序为
BCBAA。 - 操作 2 后顺序为
CBBAA。 - 操作 5 后顺序为
AABBC。
通过 2 次或更少的操作无法达成,因此输出 3。
- 操作 4 后顺序为
-
对于第 2 盘煎饼塔,以下 2 次操作即可:
- 操作 5 后顺序为
BABCC。 - 操作 2 后顺序为
ABBCC。
不能通过 1 次或更少的操作实现,因此输出 2。
- 操作 5 后顺序为
-
第 3 盘煎饼塔已经是好煎饼塔,无需操作,因此输出 0。
注意,有可能存在多盘煎饼塔的初始顺序相同的情况。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?