SRM 328 div1 level 1
どんどん解いちゃうな。ヤバイ。
Nが40までならごり押しでいける。全点を全時間で、隣接するライトがOFFなら色をつけて・・・を繰り返す。全点が怖かったので、ちょっと工夫して
- 色の数の要素数でArrayList[]を作成して、そこに点灯したライトの座標int[]を入れていく
毎回、ArrayListを引っ張り出してfor(int i=array.size()-1;i>=0;i--)でループすれば
このArrayListに要素を追加しても最初の終了条件のままループできる(最後に追加するので) - ライトを点灯したらcount++して、count<n*n*nの間、whileでループするようにする
- boolean[][][] memを用意して、点灯したらtrueにすることで点灯したことを判別
しかし、解説にあるSnapDragonのsolution、すごいな。
- ある点の最終的な色は、色のスタート地点からのマンハッタン距離(格子上の距離)が最も近い色となる
- 各点において各色からのマンハッタン距離(abs(x0-x)+abs(y0-y)+abs(z0-z))を計算して最小の色に+1
0 Comments:
コメントを投稿
<< Home