ISBN 9784839952952

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
著者
渡部有隆
出版社
マイナビ出版
刊行
2015-01

概要

競技プログラミングを通じてアルゴリズムとデータ構造の基礎を実装習得する

想定読者

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・二分探索・ソートアルゴリズムを問題の制約から選択し、自力で実装してオンラインジャッジに通せる

章立て

(公式情報未確認 — 出版社公式ページの目次が公開され次第、本セクションを更新予定)

関連記事 / 参考情報

学習のヒント

  • 各章の演習問題は 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 活用パターンを学ぶことで、競プロ実戦での実装速度を大きく向上させられる

出版社による内容紹介

プロコンで勝つための必須テクニック「アルゴリズム」と「データ構造」の基礎をマスター!

この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。

質問に答えるだけで、
あなたに合う専門書が見つかる

IT・デザイン・士業・医療・経理・教育・研究 ほか、あらゆる分野の専門書と 「読む順序」(学習ロードマップ)を収録。何を選べばいいか分からなくても、 いくつかの質問に答えるだけでたどり着けます。