🚀
【読書メモ】競技プログラミングの鉄則
はじめに
アルゴリズムや競技プログラミングの力を体系的に伸ばしたいと思い、E869120さん著『競技プログラミングの鉄則』を手に取りました。
これまで断片的に学習していたアルゴリズムや計算量の理解を整理し直し、演習問題を通じて手を動かしながら実力を高めたかったのが動機です。
AtCoderのレートがまだ高くない自分にとって、本書は基礎〜中級者向けに非常にバランス良く構成されており、まさに「教科書」として活用できる一冊でした。
本書の概要
本書は、競技プログラミングの全体像を「典型アルゴリズム」と「思考テクニック」の両面から体系的に解説した、全10章・464ページのフルカラー教科書です。
- 第1章:アルゴリズムと計算量(全体像とウォームアップ問題)
- 第2〜9章:累積和/二分探索/DP/数学/考察/ヒューリスティック/データ構造/グラフ
- 第10章:実戦的な総合問題での知識定着
また、演習問題が153問掲載されており、自動採点対応で復習にも最適です。
学びたかったこと・目的
- 競技プログラミングの基礎力強化
- アルゴリズム・データ構造の体系的理解
- AtCoderレーティング向上のための演習
- ヒューリスティック最適化への入門
得られた知識・実践したこと
✅ 計算量とアルゴリズムの選択指針を明確に理解
- 時間計算量のオーダーと入力制約から、使うべき手法の見極めができるように。
- 例:入力N=10^5 → O(N log N)以内を狙う、などの感覚が身についた。
✅ 典型アルゴリズムの基礎を一通り網羅
- 累積和・二分探索・DP・グラフなど、頻出手法の書き方と考え方を整理。
- C++以外でも、Pythonで実装し直して理解を深めた。
✅ ヒューリスティックの導入知識を獲得
- 第7章で貪欲法・局所探索・焼きなまし・ビームサーチの概要を学習。
- AHC(AtCoder Heuristic Contest)への関心が高まった。
✅ 演習問題を通じて実装力を強化
- 例題 → 応用問題 → 力試し問題の構成で、徐々にレベルアップできる。
- 間違えた問題を何度も解き直すことで、定着率も向上。
理解が難しかった部分
⚠ 動的計画法の状態設計
- 「何を最適化したいか」と「どういう状態に分けるか」の設計が難しかった。
- 特に多次元DPやbitDPで混乱する場面が多かった。
⚠ ヒューリスティックの具体的な調整
- 概念は理解できても、スコア関数の設計や温度パラメータの調整は実践で試行錯誤が必要と感じた。
現場での活用イメージ
🚀 開発中のアプリでのアルゴリズム適用
- フィルタ機能の高速化に二分探索や累積和を応用。
- 複雑な条件分岐をDP的に状態管理する設計にもヒントが得られた。
🚀 技術試験やコーディング面接への対応力向上
- 計算量やデータ構造の選択が問われる場面で、即座に引き出せる知識が増えた。
どんな人におすすめか?
- 競技プログラミング初心者〜中級者
- アルゴリズムの全体像を基礎から学び直したい人
- AtCoderレート0〜2000未満の人
- C++以外でもPythonなどで学びたい人
- 図解での理解を重視したい人
おわりに
『競技プログラミングの鉄則』は、まさに“教科書”としての完成度が非常に高く、フルカラーで視覚的にもわかりやすい点が特に魅力です。
今後は、本書で学んだ内容をベースに、AtCoderの問題を継続的に解きながら、応用力・発想力を高めていきたいと思います。
また、ヒューリスティックや最適化アルゴリズムの分野もより深く掘り下げていく予定です。
Discussion