パンケーキ (Pancake)
日本語
Language
Contribute a translation- Time limit
- 2500 ms
- Memory limit
- 1024 MB
- Submissions
- 0
- Correct
- 0
- Solved by
- 0
- AC rate
- —
Statement
ビ太郎はパンケーキ店で働いている.
この店で最も人気のあるメニューは \(N\) 枚のパンケーキが積み重なったパンケーキタワーである.店で作られているパンケーキには \(3\) 種類の味があり,それぞれ A,B,C と呼ぶことにする.
ここで,パンケーキの並び方が次の条件を満たすようになっているパンケーキタワーを良いパンケーキタワーと呼ぶことにする.
- すべての味
Aのパンケーキと味Bのパンケーキの組において,味Aのパンケーキが味Bのパンケーキより上にある. - すべての味
Aのパンケーキと味Cのパンケーキの組において,味Aのパンケーキが味Cのパンケーキより上にある. - すべての味
Bのパンケーキと味Cのパンケーキの組において,味Bのパンケーキが味Cのパンケーキより上にある.
例えば,パンケーキの味がそれぞれ上から順に AABBBC,ACC,BBBB となっているパンケーキタワーはどれも良いパンケーキタワーであるが,AABABCC,CA となっているパンケーキタワーはどれも良いパンケーキタワーではない.
盛り付け担当のビ太郎はパンケーキタワーに対して次の操作を行うことができる.
- 操作 \(k\) (\(2 \leqq k \leqq N\)):上から \(k\) 枚目のパンケーキの下側にフライ返しを差し込み,そこから上のパンケーキをひっくり返す.すなわち,上から \(k\) 枚のパンケーキの並び方を反転させる.
例えば,パンケーキの味が上から順に ABCB となっているパンケーキタワーに操作 \(2\),操作 \(3\),操作 \(4\) をそれぞれ行った場合,パンケーキの並び方は BACB,CBAB,BCBA となる.
今,\(Q\) 皿のパンケーキタワーがあり,\(i\) 皿目 (\(1 \leqq i \leqq Q\)) のパンケーキタワーはパンケーキの味が上から順に \(S_{i,1}S_{i,2} \cdots S_{i,N}\) となっている.ビ太郎はそれぞれのパンケーキタワーについて,できる限り少ない回数の操作で良いパンケーキタワーにしたい.
\(Q\) 皿のパンケーキタワーの並び方の情報が与えられるので,それぞれのパンケーキタワーについて,良いパンケーキタワーにするのに必要な操作の回数の最小値を求めるプログラムを作成せよ.
Constraints
- \(2 \leqq N \leqq 13\).
- \(1 \leqq Q \leqq 100\,000\).
- \(S_{i,j}\) は
A,B,Cのいずれかである (\(1 \leqq i \leqq Q\),\(1 \leqq j \leqq N\)).
Subtasks
- (\(4\) 点) \(N \leqq 5\),\(Q = 1\).
- (\(10\) 点) \(N \leqq 5\).
- (\(60\) 点) \(Q = 1\).
- (\(26\) 点) 追加の制約はない.
Input
入力は以下の形式で標準入力から与えられる.
\(N\) \(Q\)
\(S_1\)
\(S_2\)
\(\vdots\)
\(S_Q\)
ただし,\(S_i\) (\(1 \leqq i \leqq Q\)) は長さ \(N\) の文字列で,その \(j\) 文字目 (\(1 \leqq j \leqq N\)) は \(S_{i,j}\) である.
Output
標準出力に \(Q\) 行出力せよ.\(i\) 行目 (\(1 \leqq i \leqq Q\)) には,\(i\) 皿目のパンケーキタワーについて,良いパンケーキタワーにするのに必要な操作の回数の最小値を出力せよ.
Examples
5 3 ABCBA CCBAB AAAAA
3 2 0
\(1\) 皿目のパンケーキタワーの場合,以下の \(3\) 回の操作を行うことによって良いパンケーキタワーにすることが可能である.
- 操作 \(4\) を行う.パンケーキの味は上から順に
BCBAAとなる. - 操作 \(2\) を行う.パンケーキの味は上から順に
CBBAAとなる. - 操作 \(5\) を行う.パンケーキの味は上から順に
AABBCとなる.
\(2\) 回以下の操作によって良いパンケーキタワーにすることは不可能であるので,\(1\) 行目に \(3\) を出力する.
\(2\) 皿目のパンケーキタワーの場合,以下の \(2\) 回の操作を行うことによって良いパンケーキタワーにすることが可能である.
- 操作 \(5\) を行う.パンケーキの味は上から順に
BABCCとなる. - 操作 \(2\) を行う.パンケーキの味は上から順に
ABBCCとなる.
\(1\) 回以下の操作によって良いパンケーキタワーにすることは不可能であるので,\(2\) 行目に \(2\) を出力する.
\(3\) 皿目のパンケーキタワーの場合,既に良いパンケーキタワーになっているので操作を行う必要がない.したがって,\(3\) 行目に \(0\) を出力する.
2 5 AC AC AC AC AC
0 0 0 0 0
パンケーキの並び方が同じであるようなパンケーキタワーが複数個存在する場合もあることに注意せよ.
13 1 ABCCABCBACBAA
9
13 4 CCAAACBAAAABB BBBCCBCCCBCBC CCCAAAABBBBBB AABCBCACBACBA
4 6 2 10
Notes
JOI 2021 · JCIOI · CC BY-SA 4.0
Tags
No tags yet