見出し画像

14歳がAtCoderで入茶しました


(この記事は茶色を目指している灰色の方向けに書かれています)

1.はじめに

皆さん、こんにちはー!
中学二年生のmizzpika(https://twitter.com/iluv_pikachuuuu)です!
2024/1/14、無事「入茶」を達成することができたので記事を書いてみようと思います!
「入茶したい!」と思っている方の少しでも役に立てれば幸いです!
ところどころ見にくい部分があるとは思いますが、ご了承ください。

2.AtCoderの環境について

ローカル環境

自分は「ローカル環境」を全く使用せずに競技プログラミングをしています。テストケースの確認には「AtCoder Easy Test v2」を使用しています。

その他おすすめ拡張機能

最低限入れておくと、かなり競プロが捗る拡張機能をいくつか紹介します

3.練習内容

(※AtCoderを始めたばかりの方は、APG4B(C++向け)というAtCoder公式のテキストを全て勉強してから先をお読みください。)

茶色になるためには、A問題、B問題を早解きするよりも
C問題、D問題を解けるようになることが必要です。

1.AtCoder Beginner Contestの過去問

茶色になるためにはABCで勝つことが不可欠であるため、ABCの過去問を解くことは最も効率の良い練習方法と言えます。以下のサイトで効率よくABCの過去問を解くことができます。

以下に、僕のこれまでの過去問の記録を示します。

ABCの過去問正解数

Problem A(A問題)、Problem B(B問題)は慣れてきたら飛ばしてもOKです。
ただし、競技プログラミングからプログラミングの世界に入って、コーディングなどに慣れていない僕の様な人は、A問題、B問題もたくさん解くことをおすすめします。
「C問題、D問題あんま解いて無くない?」と言われるかもしれません。その通りです。サボり気味です。(やる気が出ない場合は無理に高難易度に手を出さず、低難易度埋めをするのも一つの選択肢だと思います!)
しかし、コンテスト中にC、D問題をACすることができているのはアルゴリズムや技術を勉強しているからだと思います。

2.アルゴリズムの勉強

アルゴリズム(計算手順や計算速度を最適化する方法、という認識でOKです)を知っていなければ、難しいコンテストの問題を解くことができません。
以下に、僕がやっているアルゴリズムの勉強方法を示します

  • 競技プログラミングの鉄則」(通称鉄則本)でアルゴリズムの考え方を理解し、感覚を身に着ける

  • アルゴ式」で分からないアルゴリズムを練習する

  • X(旧Twitter)やDiscordなどのSNSを利用して質問をする


以下に、僕が茶色になるのに必要だと思ったアルゴリズム、技術を列挙します
(入茶を保証するものではなく、また以下のすべての知識が無くても茶色になることは可能です)


~アルゴリズム編~

  • 全探索(bit全探索、順列全探索を含む)

  • 累積和(二次元累積和を含む)

  • 基本的なDFS、BFS

  • 基本的な二分探索(lower_bound、upper_bound)

「あれ?意外に少ない?」と思った方が多いと思います。茶色には高度なアルゴリズムは必要ありません。(正直動的計画法や複雑な二分探索などは茶色になるだけなら不要だと思います。)必要なのは「そこそこの慣れ」と「そこそこの技術」です!

~技術編~

  • long long型の使用やループのmodなどによるオーバーフロー対策

  • 状況による配列の種類(vector型、stack型、queue型、deque型など)の使い分け

  • ユークリッドの互除法

  • 高速なべき乗計算

  • 型変換、進数変換

  • 状況による繰り上げ((x+y-1)/y)、切り捨ての使い分け

ら辺が上手く使えれば十分だと思います!
「慣れ」については、A、B問題埋めが役に立っていると思います。何をやればいいか分からない人にABCの低難易度埋めは良いと思います。

最後に

最後までお読みくださり、ありがとうございます!
僕は「茶色」に留まらずもっと上を目指して行くので是非これからも応援よろしくお願いします!!
それでは入緑記事でお会いしましょ~!

緑パフォを出しまくっている天才の図

この記事が気に入ったらサポートをしてみませんか?