ISBN 9784839952952
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
概要
競技プログラミングを通じてアルゴリズムとデータ構造の基礎を実装習得する
想定読者
AtCoder・ICPC等に入門したい学生・エンジニアで、データ構造をスクラッチ実装した経験がほとんどない層
こんな人には向いていない
- AtCoderで緑〜水色以上のレーティングをすでに持つコーダー:スタック・キュー・BFS/DFSは既知事項となり、本書の演習問題では実力向上の余地が少ない
- 業務開発向けのアルゴリズム応用を求める読者:本書の解説はコンテスト問題に特化しており、実務システム設計への橋渡しは別書で補う必要がある
- 動的計画法の高度な最適化やネットワークフローなど競プロ中〜上級テクニックを求める読者:本書の射程は基礎アルゴリズムの実装習熟までで、上位帯の技法はカバーしない
この本で身につくこと
- スタック・キュー・優先度付きキュー・二分探索木を自力でスクラッチ実装し、選択基準を判断できる
- BFS・DFSを問題の構造(最短経路 vs 全探索)から使い分けて実装できる
- クイックソート・マージソートの仕組みと平均・最悪計算量の差を説明できる
- 線形探索・二分探索の適用条件を判断し、O(N) vs O(log N) を意識してコードを選択できる
- AOJ(Aizu Online Judge)の ALDS シリーズに解答を提出し、ジャッジ結果で正誤を即座に確認しながら学習サイクルを回せる
読了後にできること
Before(読む前): アルゴリズム名は知っているが、AtCoder の B〜C 問題でスタックやグラフ探索が必要な場面になると実装で手が止まる
After(読み終えた後): BFS・DFS・二分探索・ソートアルゴリズムを問題の制約から選択し、自力で実装してオンラインジャッジに通せる
章立て
(公式情報未確認 — 出版社公式ページの目次が公開され次第、本セクションを更新予定)
関連記事 / 参考情報
- アルゴリズムの世界地図 — アルゴリズム全体の分類と難易度マップを整理した記事。本書が扱う基礎領域の全体像における位置付けを俯瞰できる
- 厳選!C++ アルゴリズム実装に使える 25 の STL 機能【前編】 — 競プロ頻出 C++ STL の使い方を解説。本書でアルゴリズムを手実装した後に読むと、実装効率の向上に直結する
- AtCoder での実力アップを目指そう! ~競プロ典型 90 問~ — 本書で基礎を固めた後の実践演習として参照されることが多い、AtCoder 典型90問の解説・問題集記事
- 応用情報を逆に2年かけて合格する学習方法。コンピュータサイエンスの体系的学習と、長期記憶への定着 — CS 体系学習の文脈でアルゴリズム基礎書として本書を参照。競プロ以外の目的でも活用されている実態が分かる
- 競プロを始めた初級者が感じたことをまとめてみる — 入門者が感じた競プロ学習の難所と本書の使われ方を振り返る。読み始め前後のギャップ感が伝わる
- Python版 螺旋本(『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』) 解答例 — 本書演習問題の Python 解答例集。「螺旋本」の愛称と C++ 以外の言語での活用実態を示す一次資料
- 競技プログラミングの本まとめ — 競プロ書籍を難易度別に整理したまとめ。本書の立ち位置と次ステップが他書との対比で確認できる
学習のヒント
- 各章の演習問題は AIZU ONLINE JUDGE(AOJ)の ALDS(Algorithm and Data Structure)シリーズに対応している。コードを書いてすぐジャッジに提出し、AC を確認しながら進めるサイクルが定着への最短経路
- Python で取り組む場合は Qiita の「Python版 螺旋本解答例」を補助資料として活用できる。ただし計算量制約で TLE が出る問題があるため、C++ の感覚と対照させながら読むと言語選択の判断基準が養われる
- 「知っているつもり」の章でも演習問題だけは必ず解くことを勧める。スタック・キューのような見慣れたデータ構造も、制約のある実装問題で詰まることで理解の浅さが露わになるケースがある
- 本書単体では全体像が見えにくいと感じたら、Qiita の「アルゴリズムの世界地図」記事を先に読んで位置付けを把握しておくと、各章の目的意識が明確になる
前提知識
- C++ または Java の基本文法(変数・ループ・関数・配列)を一通り書いた経験
- O記法(計算量)の概念を概略で把握していること(詳細は本書内で説明される)
- 再帰関数の動作を紙の上でトレースできる程度の理解
次に読む本
プログラミングコンテストチャレンジブック(蟻本)
本書で基礎を固めた後、動的計画法の高度な最適化・グラフアルゴリズム・数学的手法など競プロ中〜上級テクニックを体系的に学ぶ定番書
AtCoder での実力アップを目指そう! ~競プロ典型 90 問~
本書で習得した基礎実装を実際のコンテスト形式の問題で練習できる。AtCoder 緑〜水色帯を目指す段階の実践教材として Qiita 上で広く参照されている
厳選!C++ アルゴリズム実装に使える 25 の STL 機能
本書でスクラッチ実装を体得した後に STL 活用パターンを学ぶことで、競プロ実戦での実装速度を大きく向上させられる
出版社による内容紹介
プロコンで勝つための必須テクニック「アルゴリズム」と「データ構造」の基礎をマスター!
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。