AtCoderで青色になるまでにしたこと

はじめましての方ははじめまして。新青コーダーのkawap23(twitter ID: kawap23)です。青色になった自慢がしたくて記事書いたので、いいねや拡散してもらえると喜びます(クズ)

2020/5/10に行われたABC167で"6完"し、"黄色"パフォを出して青色になりました。

現状&自分語り~青色~

2019年8月10日に水色になってから9ヶ月かけて青色になりました。予定では4月中旬に青色になる予定でしたが、うまくいかないもんですね。普段はAtCoderでコンテストスポンサーもした某社で働いています。が、職場ではプログラムは書きませんん。触りません。見ることはあります。嘘です。人が書いてるのを後ろから覗くというのが正しい表現だと思います。最近だと同期がpythonでリストに対して"in"で存在判定をしていたので、setを使うべきと指摘し計算量改善に貢献しました。これが競プロerの素晴らしいところですね。Nは4でしたけど…

バックグラウンドは物理・材料系で仕事もそんな感じの研究なのでプログラムはほぼ独学でしてる趣味です。twitter界の皆様にには大変お世話になっています。ありがとうございます。

さて、青色になったレートの伸び方はこんな感じです。緑後半から明らかに傾きが変わっています。

f:id:kawap23:20200511180545p:plain

精進の進捗はこんな感じ。写真はいつもお世話になっているAtCoder Problemsさんから。色変したときくらいお布施したいです。新しく追加されたDifficulty Piesいいですね。色が綺麗。他の人と比べて進捗が早いとか問題数が多いとかはそこまでないですが、初ACからのstreak記録だけならほとんどの人に勝っているのではないでしょうか。もちろんあのtouristさんにも!

f:id:kawap23:20200511180542p:plain

f:id:kawap23:20200511180540p:plain

f:id:kawap23:20200511180454p:plain

青コーダーになるまで

ようやく本題ですね。水色になった時から同成長したかなと思い、水色になるまでにしたことの記事を見てますが、ツッコミどころ満載ですね。今なら水色になるためにUnion-Findは必須だと思う…

その上で青色になるまでに必要だと思うことは

  • BFS. DFS
  • bit全探索
  • 高校数学(順列、組み合わせ等)
  • gcd, lcm
  • キュー、スタック
  • 優先度付きキュー
  • 累積和
  • いもす法
  • MODの処理
  • 簡単なDP
  • メモ化再帰
  • 二分探索
  • Union-Find
  • 最短経路問題

ここまでは水色のときにも書きましたが、やはり水色になるまでに必要だと改めて思いました。が、ある程度使いこなせるようになったと思えるのは水色中盤以降ですかね…。実装に悩まなくなってくるとようやく使いこなせてきた感が個人的にはありました。これらをある程度使いこなせるようになったことが青色になれた一因かなと。

これらに加えて、学んだこと、使ったことがあるやつは…

  • 上位陣大好きsegment tree (ほぼ使えない)
  • BIT
  • bitDP
  • 桁DP
  • 木DP
  • 2次元累積和
  • 2次元いもす法
  • 最大流・最小カット

このあたりが知識ベースで増えた部分です。コンテストではほとんど出番がなかったですが、その問題までたどり着いてなかっただけの気もします。一番レートに効いたと思うのはDP関連ですね。DP関連をいかにしっかり解けるかは、大事な気がしました。

これは自分が水色~青色にかけて必要になりそうだと思っていたことと一致しているので、水色になったときの自分はさすがだなと思います。が、セグ木なんかほぼ使ってないので、水色になったときの自分は先見の明がないなと思います。

他にはコロナ関係のおかげで精進時間を取れたのもでかいですね。あさかつ、よるかつの有志コンは集中して問題に取り組めるのに加えて過去に解いた問題を触ることが増えるためいい復習になりました。企画してくださっているかたありがとうございます。できる限り参加します。みんなで競いましょう。

青色~黄色に向けて

なんとなく黄色になるために必要だと思っていることです。黄色になって答え合わせしたいですね。

  • 500点~700点問題埋め
  • 水色問題の復習
  • セグメント木
  • DPの無意識に”書ける”ようにする
  • コンテストに出続ける

書くことに脳のコストをかけずに、考えるところにコストをかけられるようになればもう少し上にいけるかなと思ってます。

あとはただの目標ですが、Longest streakを黄色までしっかりと続けていきたいです。Longest streakだけなら勝てる人が多いので笑

最後に

青になるまでも色々な方々のブログやコードを参考にさせていただいのに加えて、提出されているコードも参考にさせていただきました。ありがとうございます。そして何よりtwitterでアドバイスをくださった方、本当にありがとうございます。一人ではここまで来れなかったです。

次の目標としては、

  • 黄色
  • オンサイトコンテスト・イベントへの参加
  • ラソンでの入賞
  • streakをつなぐ
  • 職場に競プロを広げる
  • 仕事にプログラミング能力を活かす

このあたりですかね。また強くなって記事を下記に戻ってきます。

では、このへんで。