とんちゃんといっしょ

Cloudに関する技術とか日常とかについて書いたり書かなかったり

M Judgeに参加

ICPC関連の模擬大会とういことで埼玉大の方のオンラインコンテストに参加。


A問→超絶楽勝→TLE→Accept
B問→同上→OLE
C問→(再起+枝狩り)?→未着手
D問→閉路探索→未着手
E問→ダイクストラ→TLE
F問→DP→未着手


A問は素数表を作って素数の足し算を行いSetにぶち込んで小さい順からn番目(n<4096)を出力。
超絶楽勝のはずなのだが通らない。
素数表を作るところの処理に無駄があったのでコーダーに書き直させるけど通らない。
放置して次の問題を進めて、休憩にお茶を飲みに行った帰りにコーダーがバグの原因に気づく。
入力ごとに素数表作ってる・・・だからTLE
そこを直してAcceptされた。


B問は塩基対を辞書順(どういう辞書か知らんが)に並べてSetにぶち込んで出力(出力も辞書順?)。
ちなみにEOFが来たときに終了らしい。
これまた楽勝のはずだが通らない。
Output Limite Exceedとかいう始めてみるエラー。
まぁ見るからにアウトプットが多すぎるらしいのだが、コーダー曰くEOFでちゃんと止まる仕様らしい。
でも止まってないと判定されてるとしか思えない。
JAVAはよくわからん。
C++ぐらいで書き直したら通った気がする。


B問を諦めてE問に突撃。
ダイクストラでちょちょいのちょいだと思ってたんだがそうは行かないらしい。
結局TLEが出て改善できずに終了。
私が見た限りではよく分からん処理がいくつかあったのだが、優先順位つき待ち行列を使うときには必要らしい。
よくわからん。


結局3時間半で1問しか解けないとかだめぽ。


今回の問題としては
1.コーダーが1人でガリガリ書いてて他2名が注意をしていないためミスに気づかない
2.検証もせずに安易にコミットしすぎ
3.デバッガー(私)にJAVAの知識(コレクションフレームワークの速度比較とか)がない
4.JAVAは悪くない、悪いのは私たち


これから国内予選に向けてチームで練習する必要があると思った。