#P15456. [JOI 2026 SemiFinal] 奇妙な機械 / Strange Machine
[JOI 2026 SemiFinal] 奇妙な機械 / Strange Machine
Description
あなたはタイル からタイル までの番号が付けられている 枚のタイルを持っている.各タイルの表面の色と裏面の色は黒色または白色である.ここで,黒色は文字 'B' で表し,白色は文字 'W' で表すことにする.タイル () の表面の色は,文字列 の 文字目で表される色である.タイル () の裏面の色は,文字列 の 文字目で表される色である.
ウズベキスタンはタイル装飾による歴史的建築で有名な国である.ウズベキスタンのモスクやマドラサを訪れたあなたはそれらの美しい建築に魅了され,タイルに関する奇妙な機械を購入した.この機械は左側と右側に台を持ち,それぞれの台に 枚ずつタイルを置くことで,置いた 枚のタイルと引き換えに新しいタイルを 枚受け取ることができる.左側の台に置いたタイルを ,右側の台に置いたタイルを としたとき, 枚のタイル と引き換えに受け取ることができる新しいタイル は以下の条件を満たす.
- の表面の色は, の裏面の色と の表面の色が同じとき黒色であり,そうでないとき白色である.
- の裏面の色は, の表面の色と の裏面の色が同じとき黒色であり,そうでないとき白色である.
あなたは 枚のタイルと奇妙な機械を用いて, 日間にわたり次のような行動を行うことにした. 日目 () に行う行動は以下のパターン かパターン のいずれかである.
- パターン 1:タイル の表面の色を文字 で表される色に変更する.また,タイル の裏面の色を文字 で表される色に変更する.ただし, は
'B','W'のいずれかである. - パターン 2:タイル をこの順に左から右へ一列に並べる.この列に対して,以下の操作を 回以上 回以下の好きな回数行うことで,列の中で表面が白色であるタイルをちょうど 枚にできるかを判定する思考実験を行う.
- 列の中で隣り合う 枚のタイルを選んでそれらを列から取り除く.選んだ 枚のタイルのうち,列において左側に置かれていたタイルを機械の左側の台に置き,右側に置かれていたタイルを機械の右側の台に置くことで,置いた 枚のタイルと引き換えに新しいタイルを受け取る.そして,列の中で元々 枚のタイルがあった場所に,受け取った 枚のタイルを入れる.
タイルの情報と行動の情報が与えられたとき,パターン の行動の結果を求めるプログラムを作成せよ.
Input Format
入力は以下の形式で標準入力から与えられる.
(Query 1)
(Query 2)
(Query )
各 (Query ) () にはいくつかの整数や文字が空白区切りで書かれている.そのうち最初に書かれているものは整数 のいずれかであり,これを とすると,この行の内容は以下のいずれかである.
- のとき,この行には続いて 個の整数 と 個の文字 がこの順に書かれている.これはあなたが 日目に取る行動がパターン であり,タイル の表面の色を文字 で表される色に変更し,タイル の裏面の色を文字 で表される色に変更することを表す.ただし, は
B,Wのいずれかである. - のとき,この行には続いて 個の整数 がこの順に書かれている.これはあなたが 日目に取る行動がパターン であり,タイル をこの順に左から右へ一列に並べ,この列に対して操作を行い,列の中で表面が白色であるタイルをちょうど 枚にすることができるかを判定する思考実験を行うことを表す.
Output Format
となる () それぞれに対して,列の中で表面が白色であるタイルをちょうど 枚にすることができるとき Yes を,そうでないとき No を, の昇順に改行区切りで出力せよ.
4
WBWB
BWBB
5
2 3 4 1
2 1 2 0
1 3 B B
2 3 4 2
2 2 4 1
Yes
Yes
No
Yes
6
BWBWWB
WBWBBB
8
2 1 3 2
2 2 6 0
2 1 5 3
2 3 3 0
2 3 4 1
2 5 6 2
2 2 6 4
2 1 4 2
No
Yes
Yes
Yes
Yes
No
No
Yes
Hint
Sample Explanation 1
1 日目の行動について,タイル をこの順に左から右へ一列に並べる.操作を1回も行わない場合,タイル のみ表面が白色であるため,列の中で表面が白色であるタイルをちょうど 枚にすることができる.したがって,Yes を出力する.
2 日目の行動について,タイル をこの順に左から右へ一列に並べる.タイル とタイル を選んで操作を1回行う場合,操作した後の列は1枚のタイルを含む.このタイルの表面と裏面は共に黒色であるため,列の中で表面が白色であるタイルをちょうど 枚にすることができる.したがって,Yes を出力する.
3 日目の行動について,タイル の表面の色と裏面の色を共に黒色に変更する.
4 日目の行動について,タイル をこの順に左から右へ一列に並べる.操作によって,列の中で表面が白色であるタイルをちょうど 枚にすることができないことが証明できる.したがって,No を出力する.
5 日目の行動について,タイル をこの順に左から右へ一列に並べる.タイル とタイル を選んで操作を1回行う場合,操作した後の列は2枚のタイルを含む.左側にあるタイルはタイル であり,右側にあるタイルの表面と裏面は共に黒色である.この2枚のタイルを選んでさらに操作を1回行う場合,操作した後の列は1枚のタイルを含む.このタイルの表面は白色で,裏面は黒色であるため,列の中で表面が白色であるタイルをちょうど 枚にすることができる.したがって,Yes を出力する.
この入力例は小課題 の制約を満たす.
制約
- .
- は
B,Wからなる長さ の文字列である. - は
B,Wからなる長さ の文字列である. - .
- は のいずれかである ().
- のとき, ().
- のとき, は
'B','W'のいずれかである (). - のとき, は
'B','W'のいずれかである (). - のとき, ().
- のとき, ().
- はすべて整数である.
小課題
- (6 点) .
- (10 点) , ().
- (9 点) , ().
- (8 点) , ().
- (23 点) , .
- (14 点) , .
- (30 点) 追加の制約はない.
京公网安备 11011102002149号