しろーぬなずな に投稿

AtCoderのコンテストに遅刻してはいけない理由

AtCoderをやりはじめた当初、21時〜22時40分に開催される「ABC(AtCoder Beginner Contest)」に参加するにあたって、私は普通に遅刻して参加していました。

当時の参加スタイルはこんな感じです。 だいたい20分から40分くらい遅刻して参加。そこから1時間くらいかけてC問題まで解いて、D問題を見て「うーん、難しそうだからやめとこ」と諦めるパターン。

それで、ずっとパフォーマンス(※1)が低空飛行でした。

「ああ、茶色(※2)になるにはD問題も解けないといけないのかなぁ」と思っていました。

というか、パフォーマンス399とか、あと1ポイントで茶色!みたいなスコアを出しつつ停滞していたんです。

※1 パフォーマンス:そのコンテストで自分がどれだけの成績を出したかを示す数値。これがレーティング(強さの指標)に直結します。 

※2 茶色:レーティング400〜799の層。初心者を脱して、基本的な処理が書けるレベルの証ともいわれます。

D問題が解けなくても「緑」になれる?

しかし、SNSなどで他の参加者の報告を見ていると、あることに気がつきました。 

「D問題まで安定して解けているわけではないのに、緑色(茶色のさらに上、レーティング800〜)になってる人がいる!」

ここでようやく、AtCoderの評価の仕組みに思い至ったんです。 AtCoderの順位付けは「何問解けたか」だけではなく、「21時の開始時刻から、どれくらい早く解けたか」も込みでパフォーマンスをつけているんですよね。
(ランキングページ見ると明らかです。)

 

遅刻は最初からペナルティを背負っているのと同じ

同じ正解数の場合、早く解き終わった人の方が順位が上になります。 つまり、コンテストに20分遅刻して参加するということは、システム上「最初から20分間のタイムペナルティ(誤答ペナルティ4回分相当)を背負ってスタートしている」ことと同じだったんです。

C問題までしか解けない層にとって、この「20分のタイムロス」は致命的で、順位をガクッと下げてパフォーマンスの足を引っ張る最大の原因になっていました。

まとめ:みんな、定時に待機しよう!

というわけで、適正なパフォーマンスを出してレーティングを上げていくためには、単純なプログラミング力に加えて「21時の開始と同時に問題を解き始める」ことがめちゃくちゃ重要です。

なのでみなさん、21時前にはちゃんとPCの前に座って準備しましょう!

……なお、筆者である「しろーぬなずな」は、この仕組みを完全に理解した今でも、なぜか21時20分から参加したりしています。(なぜ)

タグ