ぴーよメモ

大学生のひとりごと

Codeforcesのすすめ for AtCoderユーザー

記事を開いてくださったみなさんはじめまして。

ぴーよです(*- -)(*_ _)ペコリ

 

f:id:holeguma:20191017015714j:plain
ブログを書いてみたら字が多くなりすぎて目に悪そうだったので
目によさそうな自然の画像を入れておきます

最近周りで競プロをやってる人が増えてきていますが、日本では AtCoderが主流なのもあり、AtCoder以外やったことがないという方が結構多いように感じます。

そこで、今回は海外の競技プログラミングのサイトCodeforcesを布教したいなと思いこの記事を書くことにしましたd('∀'*)

この記事では

  • 既にAtCoderで競プロをやったことがあって、ほかのサイトのコンテストにも挑戦してみたい
  • Codeforcesの名前は聞いたことあるけど結局なにもん?

と思っている方を対象に書いていきます!

ブログ初投稿なので至らないところがあるかもしれませんが多めに見ていただけると嬉しいです。

Codeforcesとは?

Codeforces(以下こどふぉ)はロシアの競技プログラミングのコンテストサイトです。

こどふぉは現時点(2019年10月)で世界で最も規模の大きいコンテストサイトで、およそ60000人ものユーザーがこのサイトに登録しています。AtCoderが35000人なので倍ぐらいですね!

こどふぉでは定期的にコンテストが開かれていてその結果に応じてレートが付きます。これはAtCoderと全く同じです( *˙ω˙*)و


ここからはAtCoderとこどふぉの違いについてみていきましょう!

CodeforcesAtCoderの違い

レートのシステム

f:id:holeguma:20191016222143p:plain
レートと色と称号の対応

まずこの画像がこどふぉのレートと色とTitleの対応表になっています。

TitleはAtCoderでいうところの段位みたいなやつですね!
この画像はちょっと昔の画像なので今だと人数は結構変わってますが、割合は大体こんな感じだと思ってください。

ぱっと見で分かるように、AtCoderにない紫色と一文字目が黒でそれ以降が赤のやつ*1があります。

ちなみにAtCoderとの色の対応はだいたいこんな感じになってます。←個人差あり!


また、AtCoderはアカウントを作るとレートが0から始まりますが、なんとこどふぉでは始めるだけでレートが1500ももらえちゃいます!お得ですね。

Divisionとコンテスト

次に、AtCoderにはない概念であるDivisionと呼ばれるものについて説明します。Divisionはざっくりいうと色よりも更に大雑把に参加者を分類したものという感じです。

DivisionにはDiv1, Div2, Div3の三つの種類があり、基本的に自分のDivisionのコンテストにしか参加することはできません。そのため、自分がどのDivisionに属しているのかを上の表を確認して把握しておきましょう。*2

よくわからなければ始めたばっかり(初回やレートが水色以下)の時はコンテスト名にDiv2かDiv3ってかいてあるやつに出ておけばいいと覚えておけばとりあえずはなんとかなります(´-ω-)ウム

問題傾向

AtCoderは数学力と考察力が必要な問題が多い(ぴーよ調べ)のに対して、こどふぉは典型的なアルゴリズムや実装力が重視される問題の割合が多い(ぴーよ調べ)ように感じます。
令和になってからABCが6問体制になってAtCoderでも典型的な問題が出ることが増えましたが、こどふぉで典型力をつけておくとABCで良い成績を残しやすいとあるレッドコーダーが言っていたらしいです。(ぴーよ調べ)

コンテストのシステム

まず、問題文が英語かロシア語です!!!
ここでハードルが上がっている人も多いのではないかと思いますし実際英語が苦手科目だったぼくもその一人だったのですが、これは数回コンテストに出ると割と慣れます。*3逆に競プロの能力と英語の能力が同時に身に着けられると思うと一石二鳥なのです(神ω神)
ちなみにぼくは英語の能力よりもサンプルを見てそれっぽい問題の内容を推測する能力が異常に発達しました。


そして、ここからが本題ですがAtCoderがコンテスト中に問題の正解/不正解がわかるフルフィードバック形式が採用されているのに対して、こどふぉのコンテストではSystem Test形式が採用されています。


System Test形式とは簡単に言うと二回のテストを通過してはじめて得点が獲得できるシステムです。
コンテスト中にはpretestと呼ばれる20~30個の少し緩めの*4テストケースでのチェックに正解すると仮の得点がもらえるのですが、コンテスト終了後にSystem Testと呼ばれる数百個のテストケースでより厳しい最終チェックが行われ、それを通過できないとせっかく獲得した点数を失ってしまいます:;(´◦ω◦`);:

他にも、問題を解いた時にもらえる点数が時間とともに減っていったり他人のガバガバなコードの間違いを指摘して点数をゲットできたりといったこどふぉ独自のルールが色々あります。
より詳しいルールを知りたい方は公式のルール(注意:英語です)をご覧ください。



追記 (2019/10/18)
この記事では触れなかった具体的なCodeforcesのサイトの使い方に関してはNoiminさんの記事に詳しくまとまっていて公式サイトの英語を読むより遥かにわかりやすいのでこちらも併せてご覧ください|´-`)


noimin.hatenablog.com




ここまではAtCoderとこどふぉの違いについてみていきましたが、ここからはこどふぉのいい点を布教していきたいと思います≡⊂( ^-^)⊃

Codeforcesのここがいい!

Writerの数が多い

こどふぉは大規模なので作問をするWriterの人数も多いです。
Writerの人数が多ければ多いほど、ある分野に偏りすぎることなく様々な分野の問題が出題されるのでメリットが大きいです。また、AtCoderではあまりWriterをすることのない海外の有名な競プロerが作問をしていることもあるのでとても勉強になります。

コンテストの開催頻度が多い

これはさっきの話ともつながってるのですが、Writerをする人の人数が多いので必然的に問題ストックが豊富になりコンテストを開催できる回数が簡単に増やせます。
実際、多いときには一週間に3~4回コンテストが開かれることがあります。

これは余談なんですが、コンテスト中に普段の自分より高い集中力が出せたり、普段一人で解いていて解けなかった問題よりコンテスト中に解けなかった問題のほうが記憶に残ったりすると思いませんか?
ある論文によると、実際にコンテスト中とコンテスト外では明確な脳波の変化がみられ、コンテスト中に解いた問題のほうが記憶に残りやすいことが明らかになっています。*5

プログラミング能力向上や楽しさの点からみても、コンテスト回数が多いことはとてもメリットが多いと思います!

一回当たりのレート変動が大きい

こどふぉはAtCoderに比べるとコンテスト毎のレート変動が激しいです。AtCoderは失敗に優しいとよく言われますがこどふぉには慈悲がないので平気でレートが100以上消し飛んだりします。しかし、失敗したときの下がり幅が大きい一方で成功した時の上がり幅もとても大きいので自分がなれると思っていなかった色になれたり精進の成果が出やすいのも魅力の一つだと思っていますo('ー'o)♪

バーチャルコンテスト

こどふぉではバーチャルコンテストというシステムが公式の機能として備わっています。
バーチャルコンテストではこれまで開催された過去のコンテストの中から好きなコンテストを選んで本番通りの制限時間の中で練習することができます。

この機能が公式についているだけでもすごいのですが、こどふぉのバーチャルコンテストではただ制限時間があるだけではなく順位表や問題を解いた人数などが本番のコンテストと同じように変化していきます。
つまり、バーチャルコンテスト開始直後に順位表を眺めても最終結果が見えたりしてしまうことがなく文字通り本番と全く同じ環境で練習できるのです!!!

最後に

ここまで読んでくださってありがとうございました(人´∀`)
いろいろ書きましたが実際に試してみるのが一番だと思うので少しでも興味持ってくださった方がいればここからアカウントを作ってみるといいと思います。
こどふぉのコンテストは時差の関係で夜遅いことが多いのでコンテストに参加できないという方もバーチャルコンテストなどで問題を解くと練習になるのでおすすめです。
あと、定期的にVirtual Judgeでバーチャルコンテストをやってるので参加してくれる方募集中です。(宣伝)

*1: nutella(←なんて読むのw)と呼ぶそうです。この色は世界で20人くらいしかいません。色が見るからにつよそう(◎_◎;)

*2:紫コーダーはDiv1とDiv2のどちらのコンテストにも参加できますがDiv1とDiv2が同時開催されているときはDiv1にしか参加できません

*3:英語が全く分からなくても最悪Google翻訳にかければだいたい何とかなります。

*4:どれくらい緩いかはwriterさんの温情によります。

*5:嘘です。すみません。