入茶までの振り返り 2024/11/16

**std::cout << "Hello World" << std::endl;**
ということでどうも、こんにちはyimiya(いみや)です。
今回入茶したということで入茶記録としてこの文を書くことにしました。
![XユーザーのBlueberry1001さん_ 「@setoeditor 操作をくりかえすたびに長さが2倍になっていくので、何か二進数関連で良い性質がありそうだなあと思えます」 _ X および他 19 ページ - 個人 - Microsoft​ Edge 2024_11_16 23_12_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937765/0a10f551-e7b8-79d5-9380-5c2e6e62a0cf.png)

なんだこいつ入茶しただけじゃーんと思っていても別に構いません。
ちょっとだけこういうのにあこがれてたので、できるだけ自分のスペックや精進方法、
やってきたことなどを伝えていって茶色の人が増えたらいいなと思います。

ということで目次です。
*0*.*レートの移り変わり*
*1*.*自分のスペック、プログラミング環境*
*2*.*Atcoderで競技プログラミングをはじめるきっかけ*
*3*.*得意な問題、苦手な問題*
*4*.*個人での精進方法*
*5*.*自分ができる、できないアルゴリズム*
*6*.*まとめ*
こんな感じで自分が入茶までに行ってきたことを紹介できたらなと思います。

**0**.**レートの移り変わり**
自分はAtcoderを初めてほぼ毎週ABCに出ています。（20週間、毎週）
これは、自分が初めて参加したABC361の結果です。
![記事を新規作成 - Qiita および他 23 ページ - 個人 - Microsoft​ Edge 2024_11_17 21_57_01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937765/bd9dc9f7-2a2d-0510-9db7-cebc6596f860.png)
**これはひどい**
なんと100分かけても一門も正解できませんでした。
しかも、これと同じものがもう一回ありました。
しかし、回数を重ねていくとともにAが解けるようになる、A,Bが解けるようになる、A,B,Cが解けるようになるという感じで成長できました。
そして、入茶できるかもから入茶してやるーという気持ちに変わったのがABC379で
![記事を新規作成 - Qiita および他 23 ページ - 個人 - Microsoft​ Edge 2024_11_17 22_35_34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937765/564f90bc-4586-2071-3278-ec527af1128c.png)
A,B,Dが解けてなんとポイントが79も増えました。
こんな感じで少しづつ頑張ればポイントも必然的についてくるので
最初の数回で"全然ポイントもらえないからやーめよ"
**なんていうのはやめたほうがいいと思います、やっぱり勉強と似ていてがんばれば少しはテストの点がよくなると同じでもらえるポイントも増えていくのでめげずに頑張りましょう**。

**1**.**自分のスペック、プログラミング環境**
そこら辺にいる高専生です。
数学大好きであり程度の数学ならできる。
活字を読むのが苦手。
小学性の頃はscratchをやっていて検定のゴールド級を取得した。
これぐらいです。

プログラミング環境は、VScodeを使ってやっています。
![atocoder2.cpp - Visual Studio Code 2024_11_17 21_51_32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937765/6854fd93-81ff-ed55-eadf-7418e5dffe4a.png)
VScodeの環境構築についてはこちらを参考にしました。
https://qiita.com/ochx/items/01449d09777187790ee4
これによってコードテストを使わずに、問題文をコピーをして簡単にコードがあっているかどうかがわかり、わざわざブラウザをまたぐ必要が無くなるので個人的には凄い便利です。

**2**.**Atcoderで競技プログラミングをはじめるきっかけ**
高専に入ってからロボット部に入っており先輩から制御をしたい人はAtcoderでC++の基礎を学んだらいいよといわれ、4~5月ぐらいまでやっていたんですが、あまり楽しくないなと思いほぼ手を付けていなかった。しかし、自分がやっていたゲームに飽きつまらなくなってしまったその時にXとかで競技プログラミングをやっている人が目に入ったため競技プログラミング面白そうだなーって思い2024年の6月の終わりぐらいから始めました。

**3**.**得意な問題、苦手な問題**
得意なものは、ある程度な数学的考察や実装ごり押しー、テンプレートのアルゴリズムを改造させてやるもの系、少し難しい考察が必要、などそういう系の問題が得意です。

逆に苦手なものは、数学的な考察がすごい強め、文字列をごにょごにょするようなもの、解くのにアルゴリズムを2つ以上使うようなもの、考察が難しすぎる、こういうのは苦手です。

**4**.**個人での精進方法**
Atcoderを初めてから約一週間は、
*C++入門 AtCoder Programming Guide for beginners (APG4b)*を読み込んでました。
リンクはこれです。　https://atcoder.jp/contests/APG4b
いくら最初のほうを知っていても**最初からちゃんと読んだほうがいいと思います**。
なぜなら、自分が最初のほうは知っているといって読まなかったせいで
AやBでn敗しているからです。
そしてある程度、上記の(APG4b)を読み込んだら
**ひっったすらAtcoderprobremsで問題をたくさん解きましょう**
これはテストと同じで知っている問題の類題をやるのと、知らない問題の類題をやるのとでは**天と地ほどの差がつくので**精進は基本的には過去問題を解くのがおすすめです。
リンクはこちら　https://kenkoooo.com/atcoder/#/table/
しかも、Atcoderprobremsはdiffcultyがわかるため自分に見合った問題も探すことができるためおすすめです。
とりあえず**たくさん問題を解きましょう**
そして、わからなかったら解説を読んで少しでもいいから頭の片隅にこんなやり方があるんだとか記憶しておくといいのかも？しれません。

補足、diffcultyとは?
![記事を新規作成 - Qiita および他 23 ページ - 個人 - Microsoft​ Edge 2024_11_17 22_56_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3937765/0346d0ed-ffaa-0881-c6b6-e47238b975c4.png)
例えば、丸の色が灰色だったら灰色の一定のレートの人が50%の確率で解けるようなことを意味しています。

**5**.**自分ができる、できないアルゴリズム**
ここでは自分がある程度できるアルゴリズムを列挙していこうかなと思います。

できる
・ビット全探索
・順列全探索
・デキュー(deque)を使った幅優先探索
・再帰関数を使った深さ優先探索
・一次元の累積和
・二分探索（lower_bound,upper_boundも含める）

できない、わからない
・動的計画法（DP）
・ダイクストラ法
・茶色以上で使うアルゴリズム系

こんな感じでできるアルゴリズムはほぼありません、しかし大体これだけわかればある程度さきほど紹介したdiffcultyが茶色ぐらいな問題も解くことができます。
ぜひ頑張って覚えましょう！

DFS,BFSなどのアルゴリズムをどうやって使うかは、えびまラボ様の動画から理解などをしています。ABC解説やアルゴリズムの解説などをしているのでお勧めです。
リンクはこちら　https://www.youtube.com/@evimalab

**6**.**まとめ**
こんな感じで初めてABCをしたら一問も解けないような人でも継続していけばある程度のレートまで行けると思います。なので、始めたばっかりで面白くなくてもレートが下がっても継続していけばレートは上がっていくと思います。（個人的な見解）
ぜひみなさん入茶目指して頑張ってください。
私はこれから、入緑目指してがんばります！
またその時には記事を書くのでよろしくお願いします。