【色変記事】AtCoderで青になりました!!!

ZOIです。2024/10/26のABC377で青色になりました。やった～!!

レート推移はこんな感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677057/5c527638-cb0e-6dd5-7c84-cc1db1071ba4.png)

小さな変化ですが、色変したときにココの色が変わるのめちゃくちゃいいですよね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/677057/66046eeb-65ae-0f8f-3d40-20fe70558edb.png)

ちなみに入水したときの記事もあるので、入水までの話が知りたい方はこちらをどうぞ↓

https://qiita.com/ZOI_dayo/items/7f3b5e0dc0c6ba8c3d2d

## 自己紹介

ZOIという名前で生活しています。2024年秋時点で大学1年生をしています。
プログラミング自体は小学生のころからちょびちょびやっていて、中学からは人生のそこそこの割合を溶かしているといったところです。
競技プログラミングを初めたのは2019年末らしいですが、真面目にやり始めたのは2022年末です。その後、2023年夏に入水し、1年ちょっと経って入青できたというわけです。

## 入水後の出来事

入水したのが高3の夏だったので、そろそろ流石に受験勉強をしないといけませんでした。とは言っても、すぐに辞めれるわけがありません。

まず、当時はAtCoder Junior League 2023(AJL)という、中高生を対象にした個人戦のようなものが開催されていたので、それが終わるまではAtCoderを続けることにしました。ここで問題になるのが、このAJLは2023年末までのコンテストの結果により順位が決定されるという仕組みだったことです。高3の12月末となると、当然共通テストまでもうほとんど時間がないという状況なので、どうにか勉強と競技プログラミングを同時にする必要があります。
(とはいっても、志望校の関係でそこまで共通テストの点数がいらなかったので、助かりました。)

さらに、後輩とチームを組んでパソコン甲子園(PCK)のプログラミング部門に出場することにしました。無事予選を突破できたのは良いのですが、本選は11月に会津大学で行われます。つまり、11月に数日間の会津旅行が行われるということです。受験生とは...?となりますが、「プログラミング部門は(モバイル部門に比べて)事前準備がほとんどいらないから時間的ロスは無視できる」「他の学校からも高3が出ているので問題ない」ということにしておきます。

PCKの予選・本選はともに、まあ妥当だな、というくらいの順位になりました。のでコンテストの内容は無視します。
ところで、僕のレートグラフを見た人は、2022の末から急に伸び始めていることがわかると思います。これはちょうどPCK2022(前年の大会)の時で、このときにめちゃくちゃ強い同級生と会ったことで興味が湧いたというわけです。で、この強い人(たち)と再び会うことができ、いろいろ喋ったりしました。ありがたい...!!!

PCKが終わったあとも飽き足らず、JOI予選に出場します。一応後輩に競プロを宣伝するという狙いもありました。

https://x.com/ZOI_dayo/status/1724707125983900114

たしか、コンテスト開始から塾が始まるまで15分しかなく、塾の近くのモスバーガーでポテト食べながら参加しました。(高3の友人2人も巻き添えで参加しました)
なお、2次予選は思いっきり共テ模試とかぶり、受けられませんでした。残念...

年が変わり、やっと競プロから一時引退します。しかし、プログラミングをやめられるはずもなく、共テ数日前にOpenProcessingで遊んだりしています。終わりだ...。

https://x.com/ZOI_dayo/status/1744383531433050288

(ちなみに、これが今のアイコンの原型になっています)

共テが終わり、二次試験に向けて頑張る...かと思いきや、12月末までAJLをしていた数人で結託し、共テ2日目の夜のABCに出ます。共テの点数*2とABCのパフォを合計して戦っているようです。

https://x.com/ZOI_dayo/status/1746541167578341419

先程言ったとおり、共通テストがほぼ無視され二次試験で決まる大学を志望していたので、二次試験を怠けると終わりです。やっと本腰を入れて勉強...

とはなりません。PCK2022でのアプリ開発の経験を使って総合型選抜に出願していたので、面接対策をしたり原稿を作ったりします。が、蓋を開けてみればぜんぜん不合格でした。その後の一般入試でなんとか入れて、よかった～となります。これでプログラミングに復帰できます。

入学直後に、大学のプログラミング系サークルに入ります。Twitterで知っていた競プロerが大量にいて、めちゃくちゃ楽しいです。

入部直後にCPCTFという競プロとCTFをあわせたコンテストがあったので参加し、9位になりました。新入生内であれば1位らしいです。やった～!

https://trap.jp/post/2224/

その後、大学対抗の世界規模コンテストことICPCが開催されたので、とりあえず参加してみました。Twitterでもともと知っていた人たちでチームを組んだのですが、コードをバグらせまくって悲惨な結果になってしまいました...
コンテスト終了時、3人とも「...引退かな...」みたいな表情で死んでいました。僕はほとんどAtCoder、特にABCしかしていなかったので、次回はもうちょっと対策をして行きたいですね。

また、このサークルでは、競プロだけでなく、Webサービスやゲーム制作、CTF、Kaggle、さらには作曲やイラストレーターをしている人もいます。いろいろな方面に興味が出てきたので、Webサービス開発やAIにも少し触れてみることにしました。でも競プロもしたいので、完全に過労死コースです。

ついでに、少し興味があったのでVRC競プロ部にたま～にお邪魔しています。

また、東京に引っ越したのでオンサイトにも行けるようになりました。「第3回 緑以下コンテスト」に参加しましたが、結果はあんまり良くなかったです...

そんな暮らしをしているうちに、少しづつレートが上がっていき、なんとか入青までたどり着けたというわけです。

## 入水時からの変化

### 精進

大学に入って少しだけしています。といってもまだ706ACで、全然少ないです。
典型90は★6までは埋めました。あと、たま～にADT-Allの過去問をしたりしています。
EDPCはA~Tまで埋めました。

### 環境

相変わらずエディタはneovimです。が、大学入学で引っ越しなどもあり、環境をmacからWindowsデスクトップに変更しました。WindowsにWSLを入れて、その上でneovimを動かしている感じです。

テンプレはめちゃくちゃ量を増やしました。`verification-helper`でWebページにしています。
1ファイルに入れると管理できない量なので、分割して保存しておいて提出時にくっつけることにしました。`oj-bundle`を使っている人が多いと思いますが、速度が遅い気がしたのと、もう少し柔軟に動かしたかったため、自分でバンドラを作って使っています。
テストなどには、内部的にはatcoder-cliを使っていて、必要に応じてmakeやaliasなどで簡潔に書けるようにしています。

物理的な環境としては、もともとはmacbookのキーボードを使っていたのですが、今はHHKBを使っています。マウスは最近トラックボールに乗り換えたのですが、たぶんこれは競プロとは関係がないです。

あと、競プロをすると頭が熱くなるので、ヘッドホンは使わずイヤホンです。マイクの音声をイヤホンに流すようにしているので、考察の独り言が爆音で耳に入ってきていい感じです。

考察時の道具で言えば、一瞬iPadを使っていたのですが、またシャーペン+ルーズリーフに戻ってきました。ちっちゃい字をかけるのが嬉しいです。

周囲の環境で言えば、サークルに入ったことで強い人をたくさん観測できたことがめちゃくちゃ大きいと思っています。暖色がめちゃくちゃたくさんいてかなり怖いです。

### 知識・能力

入水時点からあまり増えていません...というとこの記事の存在価値がなくなってしまうので、頑張って列挙します。

#### 習得したもの

- セグ木や遅延セグ木にかなり詳しくなりました。これが一番大きいかもしれない。
- diff1000以下くらいの問題を高速に解けるようになった気がします。これのおかげで後ろの方の考察の時間を確保できて嬉しいです。
- ダイクストラやベルマンフォードなど、木の探索アルゴリズムはある程度できるはずです。ダイクストラはBFSだと思っていますが...
- C++の知識。cpprefjpとかを漁ると結構楽しいです。C++23の機能がまだ完全には実装されていないのが許せません。
- newとかポインタとか。木を組み立てたい時とかにかなり重宝します。
- Trie木。たまに使う。

#### 存在は知っているので使えるかもしれないもの

- マージテク。へ～間に合うんだ～、とだけ。
- ローリングハッシュとか重み付きUFとかクエリ逆読みとか。めったに使わない。
- Nim / Grundy数。ちょっと怪しい。
- DPに関する知識。基本EDPCで仕入れた。
- ダブリング。バグらせるけど。
- 計算量が調和級数でいい感じになるやつ。存在は知っているが、使えたことはない。

#### 存在は知っているけれど使えなさそうなもの

- 軽く理解してるけどたぶんこれを使う問題は解けない: 平衡二分探索木 / Merge Sort Tree / Dynamic Segment Tree / Low Link / 全方位木DP / Mo など。 
- 中身をあまり理解していないので使えない: 牛ゲー / FPS / Z algorithm / Slope Trick / kD-Tree / Wavelet Matrix / Segment Tree Beats など。

基本、増えた知識としては「高度すぎて使えないもの」「非想定だろうが殴れるもの」が多いと思っています。良くはないですね...

ABCでは勝てるけれどARCではあんまりなことが多いので、考察が弱いな～と感じています。ABC過学習とばかでかテンプレでレートを200くらいは盛っているんじゃないでしょうか。その点で、周囲の「数学から競プロに入った人たち」はめちゃくちゃ強いですね。すごい...!!

## 最後に

次に目指すのは黄色...と言いたいところですが、本当に暖色になれるの? というところはかなり疑問です...
これまではABCだけに適応してきたので、これからはまともに考察できるようになってARCとかでもちゃんと成績を出せるようになりたいです。また、外部のコンテストだとかなり能力が下がっている気がするので、過学習をやめよう!と思っています。

ちなみに、この文章を書いているのは10/27、ARC186の後です。で、このARCで0完太陽をして落水したので、水コーダーなのに入青記事を投稿することになります。許して......
できるだけ早く青に復帰して、安定させたいな～と思っています。難しい～～～～