アドベントカレンダー2019の12/4の記事です。つかみこんにちは、12/4に記事を書くことに定評があるhukuda222です。12/4は香風智乃ちゃんの誕生日です。おめでとうございます!ところで、智乃ちゃんの色のイメージは青だと思うのですが(髪は水色系ですが、まぁ制服とか青ですし)、先日僕のAtCoderのレートも青くなりました。そんなわけで、界隈恒例の「*色になるまでにやったこと」っていう記事を書こうと思いました。先日って書いたんですが、今調べたら今年の7/21でした。この後一回水色に落ちてかなり停滞してたので青パフォが比較的安定してきたのは最近です。直近三回でレートを90くらい落としました。誤読と誤解と後から考えるとなんでそんなことしたかわからないミスは、265日くらい1日1ACした程度ではなくならないみたいです。AtCoderとか競技プログラミングってなんやねんって方は、今年の新歓プログリレーでサークルの方が書いた記事を見ると良いと思います。大学入学前に、このサークルの先輩からAtCoderを勧められて競プロを始める大学一年生の夏くらいに緑になるものの、そこで停滞して引退する大学二年生の初夏くらいにちょっとだけ復帰して夏に引退する大学三年生の春頃に復帰して、たまにコンテストに出たりするようになるDDCC2019の20卒枠に補欠の補欠の補欠くらいで滑り込み(432位)、本戦に参加してモチベをちょっとだけ回復する今年の3月の中旬にサークルの後輩に次々とレートで抜かれるのに危機感を感じ、1日1ACと「参加できるAtCoderのratedコンテストは全て参加し前から解く」をやるようになるICPC2019予選やTTPC2019(東工大有志主催のオンサイトコンテスト)に参加したりしながら、今に至ると、引退が多いです。1日1AC1日1ACというのはその名の通り、毎日競プロの問題を1問以上解く、という試みです。やる前のレートは緑だったのですが、そこから青になれたのは、9割くらい1日1ACのおかげだと思っています。Problemsという非公式のサイトでは、AtCoderユーザーの色々な情報を見ることができます。streak"というものがあります。これは現在何日間継続して1日1ACしたかを表しており、これを眺めるのが1日1ACする上で大きなモチベになりました。rankingという機能が実装されました。200日以上AtCoderに絞って1日1ACするユーザーはあまり多くないので簡単にランキング上位に入ることができます。AtCoderのユーザー数はおよそ11万なので、そのなかで35位と考えるとめちゃくちゃすごい気がしてきます。streakはその人の競プロの能力を全く保証しません)このランキングのいいところは1日1ACをやり続ける限り順位は広義単調増加する点です。streakが少なければ、僕がやめない限りずっと僕の方がstreakの順位が高いのでマウントが取れます。(絶対取りませんが)レートが下がるとモチベも下がりますが、ランキングは単調増加するのでモチベが下がりにくいです。やる問題の決め方とりあえずABC-D、ARC-Bを埋めましたが、そこから毎日の解く問題に悩むようになりました。Problemsで、ユーザーに合わせて適切な難易度の問題を推薦するRecommendationsという機能を見つけます。難易度の選定は割と正確で、配点が高くてもできそうな問題や、配点が低くても難しい問題をちゃんと推薦してくれました。これで2ヶ月くらいは凌いでいたのですが、僕が解ける確率が80%~20%の推薦される問題をほぼ解いてしまったので、ここからどうしようか迷っています。時間がないときは、有志コンなど現在のシステムでは推薦されない良さげな難易度の問題をやり、時間がある時は解ける確率が20%未満の難しい問題を解くことになるのかなぁと思います。streakに反映されないのでちょっと尻込みしています。虚無埋めここでは、ABCのA-C(初期のCは除く)、AGC-A、他コンテストの最初の1問目あたりを解くことを指しています。賛否両論ありますが、僕は基本的にやりませんでした。streakを繋ぐために解いていました。その他いいことコンテスト参加への抵抗が減った1日1ACする前は「今週問題あんまり解けてないから、コンテスト参加するのやめようかな、どうしようかな」ってコンテスト前に毎回悩んでいたんですが、初めてからは脳死で出れるようになりました。1日を振り返った時に頑張った感を得られる誰しも、長期休暇中の特に何も予定がなかった日の夜に「あれ今日1日何やったっけ?」ってなることあると思うんですが、1日1ACをやっていると「そういえば、この問題を解いたんだった」というささやかな肯定感を得ることができます。日記のネタになる僕は日記を毎日つけているのですが、基本的にあまり書くことがありません。1日1ACをすることによって、どの問題を解いたかで確実に1行は書けるようになりました。悪いことタスクが多いと辛い研究や講義の課題、他の趣味などやることが多い日は、気づいたら1日1ACせずに23:30、みたいなことも何度かありました。詰まって時間が溶けるのが週2くらいある毎日30分くらいで一発ACできればいいんですが、1時間考えて、解答を見てから1時間考えてなお通せない、というのはよくあります。いう時、誰かのACしたコードとけんちょんさんのブログにはすごくお世話になりました。(writerによっては解説に実装コードを載せてくれる方もいて、とても助かっています)冷えるときは冷える1日1ACしても、コンテスト以外ほとんど解かなくても、あったまるときはあったまるし、冷えるときは冷えます。冷えたコンテストの後にしないほうが良いことを自戒の意味を込めて書いておきます。スマブラ(リアルタイム操作のオンライン対戦ゲーム)トレーニングモードで練習するとかなら良いですが、オンラインマッチは絶対にすべきではありません。100分~180分もコンテストに取り組んで疲れている上に、冷えて精神的負荷を受けていると普段のプレイは全くできません。僕はこれで戦闘力をVIPから50万くらい落としました。youtube(動画配信サービス)冷えて精神的負荷がかかっている状態だとゲーム実況やMADなどを無心で長時間見てしまう傾向があります。土曜日なら日曜日の午前中が消えますし、日曜日なら月曜日の一限をひどいコンディションで受けることになります。僕は一度も実践できたことはないですが、できなかった問題のできなかった原因を確認してすぐできそうなら通し、すぐには無理そうなら明日やることにして、さっさと寝るのが良いと思います。まとめ競プロは人と競う側面が大きいので、色々疲れやすく引退しやすい傾向にあります。僕は引退したくなったり引退したことも多いのですが、難しそうな問題が解けたりレートが上がる分には楽しいので、やめたくなったり実生活が異様に忙しくなったりしなければ、趣味の一つとして競プロと1日1ACは続けようと思います。競プロ始めたばかりで、早くレート上げたいって方は1日1ACをやってみてもいいかもしれません。最後に言いたいんですが、こういう記事は上振れた直後に書くべきだなと書きながら思いました。(智乃ちゃんの誕生日は変えることができないので、どうにもなりませんでした)なんか技術的な記事を書こうと思ってたのですが、講義や論文や剣盾で忙しかったので報告っぽい記事になりました。来年はまだこのサークルにいるはずなので、来年も智乃ちゃんの誕生日を祝うべく12/4に記事をかけるといいなぁ、と思います。明日、12/5は0214sh7くんの記事です。この記事を書いた人hukuda222主にプログラムを書いてます。