31
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

医師がAtCoderで黄色になった話【色変記事】

Posted at

rinmaoと申します。
ABC308でついに黄色コーダーとなったので色変記事です。

img01.png

色変記事は他にも山ほど転がってると思いますが、比較的レート帯に関わらず共通する内容を書いたつもりですので、この記事を少しでも参考にしてくださる人がいれば幸いです。

前回の色変記事もあるのでそちらも是非お願いします。

自己紹介

・プログラミング歴6年くらい?趣味でやってる
・メイン言語はPython
・医師

精進の取り組み方

自分なりの精進方法をまとめます。

精進対象

img02.png

基本的にABCしか解いてないです。
ARCはたまにやってますが、AGCはほぼ手をつけてません。
過去問をひたすら遡っていき、解けなかった問題をストックしておいて暇な時に解き直しています。
その他、典型90問やEDPCなどはやっていました。

atcoder以外のコンテストサイトも全くと言っていいほどやってないです。
やらなくていいと思っているというよりかは、シンプルに時間がないだけです。

精進中の意識

再現性のある考察ができるか、ということは精進中に常に意識しています。

例えば「DPで解けることは自力では思いつけないが、DPで解けると言われたらコードを書ける問題」みたいな状況はよくあると思います。
こういう問題で学ぶべきは、DPそのものではなく、DPを使うという結論に至る思考過程です。
その思考過程を経ずに解説を見ると、ひらめきや天才的能力が無いと解けない問題に感じてしまいます。

どうしてもアルゴリズムやデータ構造そのものの勉強をしがちだと思いますが、それと同等に、それらを使用するべき時に引き出せる思考過程を学ぶべきです。
この力を鍛えるには、1つのアルゴリズムの例題を連続して解くのではなく、ABCの実際の問題セットなどでランダムに解くのがいいでしょう。
公式解説だけでなく、Twitterやブログ等で色々な人の思考過程を見るのがすごく勉強になると思います。

解く問題のdiff

img03.png

自分は現在のレートより2色以上問題はほとんど解きません。
青色の間は青色diffを解くのがメインで、黄色diffすらもほぼ解いてないです。
1.5-2色以上離れちゃうと、背景知識が足りず、その問題が難しい理由がまず理解できないんじゃないかなと思ってます。
自分よりも知識も技術もあるかなり強い人達が悩んでいる問題ということなので。
それよりも自分と同等〜1つ下の色を確実に速く解くことを重視すべきという考えです。
たまにTwitter等で2,3色上の問題を解きまくってる人を見ると「なんだかなー」という気持ちになります。
もちろん高diffのテクニックを修得しておいて、一発逆転を狙えるようにするっていうのも考え方の一つですが。

競プロへのスタンス

いかに高いパフォーマンスを出せるかという「競技」 だと思っています。
早解きをするのか、得意分野を作って博打的にするのか、実装力をつけるのか、強さの種類は人それぞれです。
自分にとって最も(平均的に)高いパフォーマンスを出せる戦略を取るべきです。

また、通信環境、ジャッジ遅延時の立ち回り、体調管理なども含めて競プロです。
これらを言い訳にすべきではありません。
不測の事態が起こった状況でもいかに最善手を取れるかが大事です。

言語選択について

言語選択の有利不利についても度々議論に挙げられるので少しだけ。
これも人それぞれ好きな言語を使うべき、それだけです。
言語間で難易度が変わるような問題に対して文句を言うのはナンセンスでしょう。
そういう言語ごとの得手不得手も含めて「競技」というべきです。
もちろん参加者が広く楽しめるよう、運営は適度な問題を提供すべきではありますが。

ちなみに自分はコンテストではPythonしか使っていませんが、言語仕様や弱点も大体理解しているので、青色になってからくらいは、Pythonを選んでるせいでACできないということはなかったように思います。

青色から黄色の過程

正直新しく修得した知識・アルゴリズムはほとんどないです。
ただ、確実にいえるのは、解くスピードが速くなった、精度が上がったことでしょうか。
この期間での精進量もそこまで多くはなく、基本的にABCに参加とその復習がメインでした。

青色→黄色の期間で、新規にコンテスト中にACできたものは
・ちょっと難しいDP(期待値, bit, 桁など)
・ダブリング
・ローリングハッシュ
くらいだと思います。
逆に言えばここら辺かけなくても青色にはなれます。
フロー、LCA、SCCとかは勉強はしていましたけど、コンテスト中に使ったことはないです。

黄色に到達した人の中では比較的アルゴリズム知識が少ないほうじゃないかと思います。

最後に

青色になったときは黄色になれるとは思っていませんでした。
ただ、今後積極的にARC/AGCに参加していくかというと微妙なところなので、橙を目指すのは厳しいかな…という気持ちです。
他のコンテストサイトに参加とかはしてみたいかな。
あとはヒューリスティックにほぼ参加しておらずヨワヨワなので、そっちもやっていきたいです。

拙い文章ですが、ここまで読んでくださりありがとうございました。

31
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?