jj1gujのブログ

アイコン画像は音速の奇行子 様よりいただきました

AtCoderで緑色になった

昨日あった日立製作所社会システム事業部プログラミングコンテスト2020*1でとうとう!緑色に!!なりました!!!や っ た ね!!!!!!!
コンテスト成績はこちら
ってことで念願の色変記事を書いていきます*2.

はじめたきっかけ

もともとB1の頃からプログラミングを始めてて五目並べやオセロソフトを作ってました.
一応自分のアルゴリズム能力とかそこら辺を伸ばすためにAOJをポツポツとやってました.
AtCoderの存在もB2あたりで知ったのですがなかなか始められませんでした.
B3になったくらいの頃にたまたまこの記事を読んで面白そうだなぁって思って始めました.

note.com

茶色になるまで

とりあえず10回以上参加しないとレーティングが低く出てしまうのでだいたいそのくらいまでに茶色になりたいなぁって思いながら特に何も考えずにやってました.
最初はPythonでやってて途中から速さが欲しくなったのでC++やCも使うようになりました*3.
一応数学問題にそこそこ強く4完水パフォ取ったこともあって2回連続unrated回引き当てたことはあったものの特にこれといった苦労はなくrated10回参加で茶色になりました.

できるようになったこと

  • 大まかな計算量の見積もり
  • Pythonでの {} _ n C _ {r}の計算方法

茶色~緑色*4

7月〜9月

茶色になって最初のABCでいきなり6ペナ3完とやらかす.

Contest Result - AtCoder

その後最強学生コンでバイト帰りか何かののスマホコーディングで3ペナ1完75分をやらかし激冷えしました.
そこそこプログラムを書ける人であれば灰色の間はスマホコーディングでやらかしても多少はレートは上がると思うのですが*5 茶色になったら確実に冷えます.
スマホコーディング, ダメ!ゼッタイ!
その後のABCでまたやらかしました.
これで合わせて100近くレートが下がりました…
その後ぽつぽつとレートは上げ, 9月末にはHighest近くまでレートを復帰させたもののまぁ自分の適性ここらへんかなぁ…と思いつつやってました*6.

転機となったのが最強学生コン本選イベントです.
そこでAtCoder緑色はp◯izaのSランクとだいたい一緒というのを聞き, 更にエンカした人たちがみんな強くてぼくもそこまで行きたいと思うようになりました.

f:id:jj1guj:20200309205947j:plain
電通さん, ありがとう!
ただ, あまりにも実力のなさを痛感していたためこれをきっかけに学類を卒業するまでに緑色になることを決めました.

やったこと

  • レートの劇冷え()
  • スマホコーディング
  • 緑を目指す決心*7

10月〜12月

で, 何を始めたかというとFortranのお勉強です!(は?)
もともとC++よりも速いという噂を聞いていたこと, あんましやってる人がいないこと, そして現在もシミュレーションに使用されている言語であることからやってみたいと思っていました.
そしてただお勉強するだけではつまらないのでFortranを使ってABCのA問題〜C問題を埋め始めました*8.
おかげでもともとC問題まで30分くらいかかっていたのが15~20分くらいまでに短縮できました.
更に, ABC144(話題のWater Bottle回)でWater Bottleを数学で殴って50分4完したことでとてもあったまりました!*9やったね!
まぁその後はちょっと冷やしつつも停滞する日々が続きました(適当).
あとはブログを書き始めました.
ただ全然強くもなければ説明するのも上手くないのでそのとき頭の中でどう考えていたか垂れ流すだけ垂れ流すことにしました.

正直ブログに関しては効果のほどはわかりません(正直これで強くなってる実感はない気がする…)が, Fortranのお勉強は割とおすすめです!
というのも速さはC++と同等かそれ以上でソードのライブラリ等用意しておけばC++よりもコード長がスッキリするからです*10(もちろん諸説あり. というか全方位から怒られそう).

やったこと

  • Fortranのお勉強
  • ABCのA~C埋め
  • ブログ

1月〜2月

確かここらへんでだいぶ緑化が見えてきたので目標時期を3月末に変更することにしました.
そして, EDPCの問題をちょいちょい解きつつDPのお勉強を始めました.
なぜDPにしたかというとCafeCoderでDPっぽい問題が出てコンテスト中に解けて気をよくしたからですね().
そのおかげでABC153で5完40分水パフォでほぼほぼ緑へのマジックが点灯しました!
そこで目標時期を2月末に変更しました.



が, 2月はレートを劇冷えさせ, それを回復させるだけで終わってしまいました…
特にABC156のD問題で解法が5分くらいで浮かんだにも関わらずmodの逆元をよく知らなかったために実装できずに終わってしまったのが痛かったです.
更に追い討ちをかけるようにこの回でぼくよりあとから始めたサークルの1年生に抜かされてしまいました…*11
ただ悪いことばかり起きたわけではなくなんだかんだでFortranのLanguage Owners第3位になったりFortranのAC数が200を超えたりしてました*12.
この頃お年玉が入ったので蟻本を買ってちょいちょいお勉強を始めました.

やったこと

  • DPのお勉強
  • modの逆元のお勉強
  • 蟻本🐜

3月

とりあえずもうできるだけ早く緑化することを目標にして戦略を立てました.
戦略としては3/1にABCが生えてたのでここでなんとか最低でもパフォ1000で緑化できるくらいに上げて日立コンで早解き勝負を挑むというものです.
3/1のABC156でなんとか緑直前まで上げられたためかなり望みが見えました.
そして, 直前に生えたABC157はパスして昨日の日立コンに臨みました.
そしてこれが見事にはまってやっと緑色になれました!!

twitter.com

ただのクソ長いポエムになったのでまとめ

できるようになったこと

かなり調子こいてるけど緑色を目指す人たちへ

なんだかんだ精進してる時とか気分じゃないときは休んだりさぼったりしてたので無理やり精進しなきゃって思うよりも楽しんでやるといいと思います!

今後の目標

目標としてはとりあえず茶色に戻らないようにすること*13, そして年内にレートを1000まで上げることです.
正直今の実力だと適正がよくて900弱くらいだと思ってるので蟻本や銀髪赤眼本使って精進したいと思います!

*1:名前長くないと思いませんか??ぼくは思います

*2:そもそも色変記事を書くこと自体が目的になっちゃってる感あるのでそんなに参考にならない気がする…

*3:まぁC++使い始めてからはほとんど使ってない

*4:ここが色々やらかしててもうほんとひどい

*5:あくまで個人の感想です

*6:夏休み中, 劇冷えさせて元に戻して終わったので虚無だった…

*7:そんなに重い感じじゃなくてなりたいなぁ〜って感じ

*8:真面目に精進してないのでまだ埋まってないです…ユルシテ…

*9:こるとんさん, ありがとう

*10:いつかFortran布教記事書きたい

*11:というか入学当初プログラミングできない状態だったのに1年も経たずにここまで伸びるとか異常じゃないですか⁇

*12:2位との落差がすごい

*13:predictorで見てみたらパフォ400取らない限り大丈夫らしい(フラグ)