ロシアのプログラミングコンテストCodeforces(通称CF)で青色に昇格しました。
日本ではAtCoderが有名ですが、AtCoderはまだ世界では知名度が低く、 世界で今一番熱いのはCodeforcesです。
AtCoderとの違い
問題文は英語。時々わかりづらいことがある
CFの問題文は英語で書かれていますが、 書いている人がネイティブでないからか、英語としても読みづらいことがある (使われるべき単語が使われていない場合、何か違うことを言おうとしてるのではないかと深読みしてしまったりもするとかもある) のと、
そもそもですが、問題文が物語x2しすぎて鬱陶しいと思うこともあります。 (名前がロシア風なので性別がピンと来ず、途中まで読んでsheと出てきて「ええーー男だったのか!」となることもあります) ただ、大抵の場合は問題自体はそこまでややこしくないことが多いため、 結果として、図とかサンプルを読めば正しく理解出来ることが多いです。
人によっては問題文を半分くらいしか読んでないという人もいると思いますが、 おれは問題の読み間違いで嵌るのが嫌なので一応全部読んでいます。 ちゃんと理解するのに長い時だと5分くらいかかりますが、コンテストが2時間あるので そんなに慌てることはないと思います。
開催が多い
AtCoderだと、ABCは週1で、ARCに関しては平均すると月1くらいだと思いますが、 CFのABC相当のdiv2(ratedは1900以下)は平均すると週に2回くらいありそうです。
- div1/2同時開催のCF Round
- div2限定のEducational CF Round
- div3限定のCF Round
と、AtCoder水色くらいの人が出れるコンテストが死ぬほどがあります。 全部出ると少し忙しいと思うくらいです。
特に、Educational CF Round(通称エデュフォ)は教育的というだけあって本当に教育的要素が高い問題が出るので、 CFに参加せずともこの過去問を全て解く方が、AtCoderの問題を精進するより実力がつくと思います。
典型的な学びの多い問題中心
CFは典型的な「アルゴリズムしてるぅー」感じの問題が出やすいです。 なので、勉強量がちゃんとレートに直結する感じがします。
ABCで満点をとって上に上がるためには、典型的な問題をちゃんと解けるようになることが大切なのですが、 そのためにもCFに出るのは大変意味のあることだと思います。
AtCoderだと解けなかった時に「だから何なの?IQ自慢?」と思う問題が存在しますが、 CFだと「これは解けなきゃいけなかった」と後悔出来る問題が多いです。 ただし、解説がすごく雑で、理解するのにAtCoderの10倍くらい時間がかかることがあります。
同じようなことを言ってる人がいました。
AtCoderは数学力と考察力が必要な問題が多い(ぴーよ調べ)のに対して、こどふぉは典型的なアルゴリズムや実装力が重視される問題の割合が多い(ぴーよ調べ)ように感じます。 令和になってからABCが6問体制になってAtCoderでも典型的な問題が出ることが増えましたが、こどふぉで典型力をつけておくとABCで良い成績を残しやすいとあるレッドコーダーが言っていたらしいです。(ぴーよ調べ)
Codeforcesのすすめ for AtCoderユーザー
AtCoderとのランク対応
りんごさんのツイートによると、AtCoderとCFは大体、同じ色どうしで対応してるということですが、 問題の得意・不得意もあると思うので、おれの感覚ではCFの青色がAtCoderの青色に対応してるかは微妙なところです。
対応させるのがはやっているので書いてみますが大体こういうつもりです pic.twitter.com/l6MNyySmyO
— rng_58 (@rng_58) January 31, 2019
CFの青色は、AtCoderのABCで5完ほぼ確殺レベルだと思います。 水色と青の中間くらいか、あるいは長くやっていればワンチャン青くらいのレベルか。 それなりにアルゴリズムしてる問題が解けるけど、少し難しくなると無理でしゅというレベルです。
以前にも話しましたが、すごく頭が良い人にとってはどうかしりませんが、 おれのようなふつう人間にとってはAtCoderの水色と青色の傾きはすごく急に見えます。 CFのdiv2でコンスタントに4完5完する(CFの紫レベルです)のは勉強していけば遠くはないかなと思いますが、 ABCの5完から6完はものすごく遠く感じます。 そういう意味でも、CFに参加するのはオススメです。
1問目からちょっと難しいこともある
ABCだとAからCくらいまでは絶対にWAしないレベルのものが出ます (特にA,Bは参加者ほぼ全員がACしてるので実質的に無意味です) が、CFのdiv2は1問目からハッとなることがたまにあります。 ABCだと2完くらいとれてる人がほとんどですが、CFは0完がふつうに存在します。 AtCoderと違ってNoSub戦略が使えないので、覚悟してコンテストに臨みましょう。
Codeforcesとの付き合い方
おれは今AtCoderは休んでいます。 というのも、AtCoderのABCで5完から6完するためのジャンプはあまりにも激しくて、 やる気が失せたからです。 おれは一度も6完出来たことがないですし、今後もいつ出来るようになるか見通しが立ちません。
ABCを6完するためには、典型問題を早く確実に解けるようになることが肝なのですが、 そのためにはCFのdiv2に出るのが一番早いです。
CFで紫に上がった人の中にはおれと同じように、 AtCoderを一回離れてCFで精進した人もいたようです。 とても理解出来ます。
主に精進する場所をAtCoder→Codeforcesにしました。 単純にAtCoderで適切に解けるレベルの問題が減った。
おれはここらへんはAtCoderで水色から青色か黄色に上がるための高速道路だと思っています。 AtCoderと戦い続けて消耗するより、CFで成長してからAtCoderに戻る方が 安定した実力がついているだろうし、レートも安定して上がりやすいだろうと予想しています。
CFで最低でも紫に上がるまではAtCoderに戻る気はありません。 その他には、yukicoderへの継続的な参加と、LeetCodeのweeklyコンテストは C,Dあたりだけは解くようにしています。
ただなんとなくAtCoderに参加し続けたいという人は別にして、 アルゴリズマーとして実力をつけてレートを上げることが目標であれば、 こういう戦略もありかなと思います。