はじめに
中学2年のkino0402です。競プロを始めて約10ヶ月、2024/8/25のARC183で入水しました。ここでは、「環境構築」「精進の内容」「オススメの教材」の3つに分けて入水に必要だと思うものについて書いていきます。
{width=100%}
目次
- 環境構築
- 精進の内容
- オススメの教材
環境構築
してません。全部未だにAtCoderのコードテストを使っています。何なら緑コーダーになるまでは学校配布のChromebookを使っていました。 学校配布のChromebookでも問題なくできます(強いて言うなら拡張機能が入れられないのが不便)。これ見てる浅野生は今すぐAtCoderのアカウントを作って始めましょう。
精進の内容
基本的にABC200以降のC問題以降を苦手なアルゴリズムの問題を中心に埋めています。モチベのない時やスキマ時間にA問題を埋めてます。基本的に今の自分の色か自分の色より1つ上の難易度の問題を解くのが良いと言われていますが、それよりも低難易度で自分の苦手なアルゴリズムに慣れる方が重要だと思います。 また、コンテストで連敗して気分が落ち込んでいる時は昔のdiffと比べて簡単な問題を解いたり、ABC4問時代のバチャをして全完したりします。
↓色ごとのAC数です。参考にしない方が良いと思います。
{width=50%} {width=50%}
ちなみに青の6ACの内訳は
- インタラクティブが2問
- 解説ACが3問
- 構築
黄の3ACの内訳は
- 解説AC
- フロー
- 重実装(3時間かけた)
橙の1ACの内訳は
- フロー
です。基本的に自分の色より2つ上以上を自力でACできることは少ないので高難易度特攻はあまりオススメしません。
オススメの教材
競プロを初めてやる人向けのものから水コーダーになりたい人向けまで、自分が役に立ったと思う教材を紹介します。
APG4b
正式名称は「C++入門 AtCoder Programming Guide for beginners」です。 競プロに必要なC++の文法などが学べます。1章を終わらせたらABCのA問題は解けるようになると思います。一応Python版もありますが、まずはC++を学ぶことをオススメします。
- C++入門 AtCoder Programming Guide for beginners (APG4b) - AtCoder https://atcoder.jp/contests/APG4b
- Python入門 AtCoder Programming Guide for beginners (APG4bPython) - AtCoder https://atcoder.jp/contests/APG4bPython
けんちょんさんの記事
AtCoderの問題の解説記事を沢山書いてる人です。ABCのA問題から最難関レベルの問題までわかりやすく書かれています。わからない問題を調べた時に大体出てきます。使うアルゴリズム毎にタグ付けもされているので新しく学んだアルゴリズムを使う練習をする際にも役立ちます。
- このブログについて - けんちょんの競プロ精進記録 https://drken1215.hatenablog.com/about
evimaさんの動画
毎週ABC終了直後に投稿される「3分でAtCoder Beginner Contest」シリーズや、初心者向けアルゴリズム解説、数学関係の問題などを投稿している人です。どの動画もわかりやすいです。
- えびまラボ - YouTube https://www.youtube.com/@evimalab
鉄則本
正式名称は「競技プログラミングの鉄則 ~ アルゴリズム力と思考力を高める77の技術 ~」です。 これを読んでおけば基本的なアルゴリズムは大体理解できます。どんなアルゴリズムがあるかを何となく理解しておけば、コンテスト中に鉄則本の実装を写してACということもあります。
自分は
- ABC340 D - Super Takahashi Bros.(ダイクストラ) https://atcoder.jp/contests/abc340/tasks/abc340_d
- ABC349 D - Divide Interval(セグ木実装) https://atcoder.jp/contests/abc349/tasks/abc349_d
- ABC368 F - Dividing Game(Grundy数) https://atcoder.jp/contests/abc368/tasks/abc368_f
などの時に鉄則本を参考にしました。 アマゾンで買えます。
- 競技プログラミングの鉄則 ~アルゴリズム力と思考力を高める77の技術~ (Compass Booksシリーズ) | 米田 優峻 | 本 | 通販 | Amazon https://www.amazon.co.jp/dp/483997750X
ac-library
教材ではないですが、水コーダーになるのに必要だと思うので書いておきます。
- Union-Find
- セグメントツリー
- 遅延セグメントツリー
- 強連結成分分解(SCC)
- 最大フロー
これらのライブラリがあります。他にも数学系のライブラリなど色々あります。 水コーダーになるためには特に
- Union-Find
- セグメントツリー
- 遅延セグメントツリー
の3つが使えると良いと思います。
おわりに
来年の部誌では入黄記事を書けるように頑張ります。最後まで見ていただきありがとうございました。