No.3374 Caesar Shift Game
タグ : / 解いたユーザー数 36
作問者 : 👑
Iroha_3856
問題文
A, B, C からなる長さ $N$ の文字列 $S$ が与えられます。
Alice さんと Bob さんは、$S$ を使って以下のようなゲームを行います。
Alice さんが先手、Bob さんが後手となり、以下のいずれかの操作を一つ選んで行うことを交互に繰り返します。
- 相手が選んだことのない $1$ 以上 $N$ 以下の整数 $i$ を一つ選び、以下のような置換を行う。
- $S$ の $i$ 文字目が
AであったときBに置き換える。 - $S$ の $i$ 文字目が
BであったときCに置き換える。 - $S$ の $i$ 文字目が
CであったときAに置き換える。
- 終了宣言を行う。
いずれかのプレイヤーが終了宣言をした、または両方のプレイヤーがそれぞれ $10^{100}$ 回ずつ操作を行った時点でゲームは終了します。
Alice さんの目標は、ゲーム終了時点の $S$ を辞書順でできるだけ小さくすることです。
逆に Bob さんの目標は、ゲーム終了時点の $S$ を辞書順でできるだけ大きくすることです。
双方が最善を尽くした$\color{red}^{*1}$ときにおける、ゲーム終了時点の $S$ を求めてください。
$T$ 個のテストケースが与えられるので、それぞれについて答えてください。
$\color{red}^{*1}$ 双方が最善を尽くすとは(クリックで開く)
A, B, C からなる長さ $N$ の文字列 $X$ であって、以下のすべてを満たすものがただ一つ存在することが示せます。
- Bob さんがどのように操作を行っても、Alice さんが適切にゲームを進めることでゲーム終了時の $S$ を辞書順で $X$ 以下にすることができる。
- Alice さんがどのように操作を行っても、Bob さんが適切にゲームを進めることでゲーム終了時の $S$ を辞書順で $X$ 以上にすることができる。
この $X$ を、双方が最善を尽くしたときにおけるゲーム終了時点の $S$ とします。
制約
- $1 \leq T \leq 10^4$
- $T$ は整数である。
- 各テストケースについて、以下の制約をすべて満たす。
- $1 \leq N \leq 5 \times 10^5$
- $N$ は整数である。
- $S$ は
A,B,Cからなる長さ $N$ の文字列である。 - 一つの入力ファイルにおける $N$ の総和は $5 \times 10^5$ 以下である。
入力
入力は以下の形式で標準入力から与えられます。ここで、$\mathrm{case}_t ~ (1 \leq t \leq T)$ は $t$ 番目のテストケースを表します。
$T$
$\mathrm{case}_1$
$\mathrm{case}_2$
$\vdots$
$\mathrm{case}_T$
各テストケースは以下の形式で与えられます。
$N$ $S$
出力
$T$ 行出力し、$t$ 行目には $t$ 番目のテストケースについての答えを出力してください。
サンプル
サンプル1
入力
2 3 ABC 5 CBABC
出力
ABC ACABC
$1$ 番目のテストケースについて、Alice さんがはじめに終了宣言を行うのが最善です。
$2$ 番目のテストケースについて、双方が最善を尽くすと以下のように操作が行われ $S$ が ACABC となります。
- Alice さんが $i = 1$ を選ぶ。
CをAに置き換える。 - Bob さんが $i = 2$ を選ぶ。
BをCに置き換える。 - Alice さんが終了宣言を行う。
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。