AHC017を通した戒め

0. はじめに

AHC017 に参加して 921 位でした。
パフォーマンスは 426 でレートが 536 → 563 になりました。
つらい。

1. ビジュアライザの使い方をちゃんと見ていなかった

ビジュアライザを見て、Input があって Output がある。
Output に出力を乗せると下の画像が変化する。
じゃあ大体の使い方はこうだな、で使っていました。
しかし詳細を見ると「dayの値を1以上にすると、その日に工事する辺のみがピンク色で表示されます。頂点をクリックすると、その頂点からの最短距離の増加量に応じて各頂点が色付けされます。」と書かれていました。
実際この機能は凄まじく便利で、頂点をクリックするとスコアの変化によって頂点に色が付けられる為、考察にかなり役立つ機能でした。
ちゃんとビジュアライザの詳細は見るべきでした。

2. 問題の得点を正確に求めすぎた

今回の問題は状態の得点を正確に求めようとすると、かなり時間がかかります。
コンテスト中は正確な得点を高速に求めることを必死に考えて、ドツボにハマっていました。
近似値となるスコアを高速に求めて山登りや焼きなましを試す方が、結果的には高得点に繋がることを初めて知りました。

3. テストケースをシード 0 しか試さなかった

最初はランダムな出力を試し、あとは 2 で高速化を頑張っていたのですが、その時に使ったテストケースはシード 0 だけでした。
ランダムだから 0 だけ見る、結果が良くなるか見たいだけだから 0 だけ見る、そんな感じで 0 だけ見てました。
テストケースによって答えが良くなったり、悪くなったりするのを見るべきところを 1 ケースで済ませたのは良くありませんでした。

4. 提出するコードをちゃんと確認しなかった

このような長期コンだと提出の間隔は WA だろうが TLE だろうが 30 分ごとになります。
つまり、答えをちゃんと出力できていないコードを間違えて提出すると無駄に 30 分提出できなくなります。
今回、ビジュアライザに貼り付けるために出力をテキストに書き込むコードを提出してしまった為、ファイルパスを晒した挙句 30 分無駄に提出できなくなってしまいました。
焦らず確認してから提出しようと思いました、間違って提出したコードは消させて欲しいです。

5. 1 つの視点に囚われすぎた

点数が低い一番の原因は、得点を高速に求めるという視点に囚われすぎて、別の解法を全く考えないことでした。
コンテスト中は上位勢は高速化に成功してるのかと思ってましたが、私の視点が狭すぎただけでした。

6. 実験を全くしていなかった

コンテスト中は様々なアイディアを出して、実験をしてそこから考察してより良い答えを求めるのがいいのは知ってましたが、今回それを全くしませんでした。
5 でも書きましたが 1 つのアイディアの高速化に囚われすぎて、実験という実験を全くすることなく終わってしまいました。

7. 途中で諦めてしまった

高速化が上手くいかず、平日は仕事もあり水曜日で諦めてしまいました。
最後の 2 日間も別のことをしてしまい、そのまま終わらせてしまいました。

8. システスに使われるコードをわかっていなかった

私は一番最後に AC したコードがシステスに使われると思っていましたが、実際は一番最後に提出したコードでした。
その結果 TLE したコードがシステスにかけられてしまい、大幅に点数を落とすことになりました。

9.

今日はなんだか眠れない。
涙が出るのは、きっと乾燥しているからなんだ。
ぐすん。