TopCoder導入解説
- 見にくいので後で画像を追加しときます。それまでしばし読みにくさをご容赦下さい。
もくじ
アカウント取得
TopCoderのサイトの全てを利用するためにはアカウントを作成する必要があります。 アカウントを取得することによって、SRM(single round match,後述)の過去問の閲覧や、 SRM,Marathon Match等への参加、Practice Roomの使用などが可能になります。
アカウントの取得方法について解説していきます。10分ほどで済むので今すぐアカウントを取りましょう!
TopCoderのページにアクセスする。
- 右上のRegister Nowをクリックする。
"I want to start using TopCoder Direct"および"on TopCoder"のチェックボックスをクリックしてSubmit
- 氏名連絡先などの欄を記入する。情報は全体公開されません。(優秀な成績を収めた際の賞金の支払いなどがあるので、本名が良いと思います)
- Email Notificationsのそれぞれにチェックを入れると、SRMなどの通知がきます。うるさいので非推奨。
- Quoteは「自分の好きな言葉、フレーズ」のような意味です。
- 記入が完了したらSubmit. アドレスにメールが届いて、そこに書かれたURLをクリックすると本登録が完了します。(だったはず)
Practice Roomの使い方
Practice Roomでは、今までのコンテストの問題を解くことができます。 また、解いた結果をサーバ上で実行し、採点することも可能です。
TopCoderホームページの左上に並んだアイコンのうち、O(n)のマークをクリックします。
- Javaアップレットが起動するので、取得したUsername, Passwordを入力してGoをクリックします。
- Chat Roomへログインします。大会前後などはここでチャットがなされたりします。
アップレットのメニューのPractice Rooms->SRMsから好きな番号を選んでクリックします。
- 部屋に飛ぶので、問題を開きましょう。
- 問題の難易度は3種類(通常は250点、500点、1000点)で、Select Oneから点数を選ぶことで、その点数の問題を開くことができます。
- 問題が別窓で開きます。問題を読んで解法を考え出します。
- デフォルトでは下側がエディタになっているので、そこにコードを書きます。
- コードが書けたら、Compileボタンを押します。サーバ側でコンパイルがされます。(コンパイルの失敗によるペナルティはありません)
- エラーなくコンパイルがされたら、提出前にテストをします。
- 問題文中で与えられた例(サンプル入出力)をテストするには、出てきたダイアログのプルダウンで、テストしたいサンプルの番号を選び、OKをクリックします。
- 実行結果が返って来ます。Correct Return Value: がYesならば成功、Noならば失敗です。
- サンプルに与えられていないケースをテストすることもできます。modifyボタンをクリックするとさらにダイアログが出ます。
- そこに変数に与える値を書きOKボタンを押してダイアログを閉じ、テストのダイアログで更にOKをクリックします。
- プログラムが正しいことを確信したらSubmitボタンを押します。送信された後での再送信は、何度でも出来ますが、点数が若干下がります。
- Practice Roomではプログラムをその場で採点することができます。
メニューからPractice Options->Run System Testを選択。
- 本番同様のテストケースで採点が行われます。実行結果が全て正しければ問題番号が緑色になります。
- 間違った(あるいは実行時間が2秒に間に合わない)ケースがあれば、問題番号が赤色になります。
- ケースをダブルクリックすることで、そのケースの詳細を見ることができます。
- 他人の回答を見ることもできます。Summaryボタンをクリックします。
- 出てきたウィンドウで、表示されている数字はそれぞれの解答の点数を表します。それをダブルクリックすることで、その解答を見ることができます。
- ここで、その解答に対しChallenge(後述)をすることもできます。
SRMへの参加方法
TopCoderでは定期的(2週間に1度程度)SRM(single round match)と呼ばれるアルゴリズムコンテストが開催されます。 毎回全世界から2000人位の競技者があつまり、75分の中でいかに早く、正確に問題を解けるかを競います。
日程
TopCoderホームページの右側、Active ContestsからNext SRMをクリックすることで、次回のSRMの日程を知ることが出来ます。 時刻が日本標準時ではなく東部夏時間などで表記されていることに注意。
TopCoder部@はてなには日本人向けのわかりやすいカレンダーがあるため、ここで確認することがおすすめです。
登録
SRMに参加するには、SRM開始3時間前から開始5分前の間に、Arena上で参加登録をする必要があります。 登録は簡単で、以下のようにします。
TopCoderホームページでO(n)アイコンをクリックし、Arenaにログイン。
メニューのActive Contests->Single Round MatchXXX(番号)->Registerを選択。
- 参加規約に同意(不正をしない、など)すれば登録完了です。
コンテスト
Arenaを起動していれば、時間になると自動的に競技部屋へと移動します。 SRMは「コーディングフェイズ」「チャレンジフェイズ」「システムテスト」の3つに分かれています。
- コーディングフェイズ中は、問題を解いて解答を送信することができます。解答の送信の仕方はPracticeと全く同じです。
- チャレンジフェイズでは、他人のコードを見て、問題と違っていると思われるコードに対して特定の入力を与え、結果そのプログラムが間違った答えを返せば、50点の得点を得ることができます。ただしそのプログラムが正しい答えを返した場合、自分の点数が-25点されるため慎重になる必要があります。
- チャレンジフェイズが終わるとシステムテストが行われます。提出したプログラムがこのテストを通った場合、そのプログラム提出時点での得点が確定します。
Plug-inの導入方法
TopCoderのデフォルトのエディタは、
- コピー&ペーストが出来ない、
- 手元でのプログラムの実行ができない、
- includeなどを毎回書く必要がある
等と、短い時間の中で出来るだけ早くプログラムを書かなければならないコンテストには不向きな部分がいくつかあります。
プラグインを導入することによりこれらの欠点を解消することができます。 Div1で戦うような中級者以上には必須であると言えます。
こちらの記事が詳しいのでリンクを貼っておきます。
TopCoderでCodeProcessor+TZTester+FileEdit
用語解説
- レート
TopCoderでは、各人にレートと呼ばれる数字が付与され、競技成績に応じて上下します。天鳳などをやったことがある方がいればあれと同じですw
- 初期値は1200です。初回参加あるいはレーティング1200未満の人達はDiv2に、1200以上でDiv1に参加します(後述)。
- Division 1
- レーティング1200以上に人間が参加するコンテストです。Div1と略されます。
- Div2より問題が難しく、Div1のEasyがDiv2のMediumと共通の問題であることが多いです。
- レッドコーダー
- SRMではレートが2300以上になると名前が赤色になります。名前が赤色の人のことをレッドコーダーと呼びます。
- 日本人に15名弱しかいない名誉ある称号です。
- レートが3000以上になると名前の前の○が二重丸になり、ターゲットと呼ばれます。世界に約20人しかいません。
- 撃墜
- Challengeにより解答に誤答をさせるような入力を与えることを、撃墜すると言います。