PKU Judge Onlineニ参戦ス

POJとは

POJはPKU Judge Onlineの略。
過去にあった様々なプログラミングコンテストの問題を収集し掲載しているサイト。
その問題を解き、ソースコードを送信すると、向こうでコンパイル・実行してくれて、正しく動作したかどうかを確認する事ができる。*1

特徴

使える言語

使える言語(環境)はC/C++/Java/Pascal/Fortran

golfが熱い

問題ごとに、ユーザー名、実行時間、使用メモリ、ソースコードのサイズがランキング形式で掲載されるから、ショートコーダーのすくつになってる。

エラーメッセージとか

テストに不合格だった場合、何がどうダメだったのかが表示される。

  • コンパイルエラー
  • 制限時間エラー
  • 制限メモリエラー
  • その他なんかの違反

特にコンパイルエラーは、エラーメッセージも教えてくれます。
それ以外は大きなヒントになってしまうため、詳しくは教えてくれません。

関連サイト

PKU wiki

PKU Wiki*というWikiがあって、かなりたくさんの問題が日本語かされている。
ちなみに私の場合は英語の勉強も兼ねてやっているので、意地でも原文でやってる。

ネタバレブログ

PKU 1000

とかやってググると、答えを載せてるブログがヒットする。これはひどい誘惑。
問題に行き詰まったときには神様のような存在だが、こういうのに頼るべきではない。
それでも見るなら、自分のコードと比較して徹底的に勉強するといい。

注意

以下は、私が40題ほど解いて学んだこと。

確認事項
  • 問題を読み間違えていないか
  • ちゃんと入力されてるか
  • 無限ループや入力待ちなどでプログラムが終了しない、などという事態に陥っていないか
アドバイス
  • 高速化のためには、アルゴリズムを見直すのがいいらしい
  • 入力データの範囲が指定されているなら、それを活用する
  • Compile Errorって出たときは、詳細情報が得られる
  • long long 使っとけばとりあえず桁溢れはしない

*1:鯖側でプログラムを実行するわけだから、セキュリティが大変らしい