A - カラフルパネル 解説

実行時間制限: 3 sec / メモリ制限: 1024 MB

問題文

N 個、横 N 個の正方形上にならんだ N×N 個のパネルがあります。あなたは、このパネルを使ってゲームを行います。

このゲームは、出来るだけ全てのパネルの色を 1 色に揃える事が目的です。最初、各パネルは、色 1 から 色 KK 色で塗られています。

好きな色を念じながら 1 つのパネルをタッチすることで、そのパネルを好きな色に変えることができます。タッチしたパネルの色を i、変えたい色を j とします。 この時、タッチしたパネルから、上下左右に隣接する色 i のパネルだけを辿って到達できる全てのパネルは、色 j に変化します。

このゲームの最終得点は、以下のような計算式で求められます。

  • 最も多いパネルの色を i とすると、色 i のパネルが 1 枚存在するごとに、100 点を得る。
  • パネルを 1 回タッチするごとに 1 点を失う。
  • ただし、パネルを合計 10000 回より多くタッチすると、システムが壊れてしまうため、0 点となる。

パネルの初期状態が与えられます。タッチの仕方を出力し、出来るだけ多くの得点を獲得してください。

なお、この問題は、入力が全て公開されており、また、全ての入力に独立な通し番号idがついています。これを利用して問題を解いても構いません。

また、C++によるジャッジ上で実際に動いている入出力チェッカーも公開しています。こちらを利用しても構いません。

制約

  • 1 ≦ id ≦ 50
  • N = 100
  • K = 9
  • SiN 文字の文字列であり、 j 番目の文字 Si,j は、1~K の K 種類である。これは、上から i 番目、左から j 番目(以下(i,j)と表す)のパネルがSi,j 色であることを表す。
  • S に使われる文字は、1~Kまで、均等な確率で独立にランダムで選ばれる。
  • 入力はこのリンクから得られるzipファイルと同一のものが与えられる。

入力 Copy

Copy
id N K
S1
S2
:
SN

出力

以下のフォーマットで出力せよ。ただし、Q はパネルをタッチする回数を表し、Yi,Xi,Ci はそれぞれ、i 番目にタッチするパネルが、上から Yi 番目、左から Xi 番目(以下、(Yi,Xi) と表す)であり、変える色が Ci であることを表す。

Q
Y1 X1 C1
Y2 X2 C2
:
YQ XQ CQ

50 個のテストケースに対する点数の和が、あなたの提出の得点となる。


入力例 1 Copy

Copy
0 6 9
515795
153859
833597
333419
333121
533917

出力例 1 Copy

Copy
2
5 5 1
5 2 1

この入力は、説明のため、実際には存在しない小さい入力を使用しております。

パネルは、初期状態では以下のようになっています。

初期状態

ここから出力の通りに 2 回タッチします。

最初は、(5,5) のパネルを色 1 に変えます。この時、隣接するパネルの中で、元のパネルの色である、色 2 のものは存在しないため、このパネルのみの色が変わります。

状態1

次に、(5,2) のパネルの色を 1 に変えます。この時、上下左右に隣接した色 3 のパネルを辿って到達できる全てのパネルは、色 1 に変化するため、以下のようにパネルが変化します。

状態2

全てのパネルを操作した後、最も多い色のパネルは色 1 であり、この枚数は 18 枚です。

よって、18×1002=1798 点が、この解の答えになります。



2020-10-16 (金)
03:46:41 +00:00