ISBN 9784839979492

アルゴリズム実技検定 公式テキスト[上級]〜[エキスパート]編

アルゴリズム実技検定 公式テキスト[上級]〜[エキスパート]編
出版社
マイナビ出版
刊行
2023-03

概要

PAST上級〜エキスパート合格を目指すアルゴリズム応用力を養う

想定読者

AtCoderで中〜上位レーティング(目安1200〜2000)を持ち、PAST上級またはエキスパート認定を取得したいエンジニアや競技プログラマー

こんな人には向いていない

  • PASTの初級〜中級対策が目的の読者(初級〜中級編の前巻が先決)
  • アルゴリズムをゼロから学び始める段階の人には前提知識の要求水準が高い
  • Pythonを使ったことがない読者(サンプルコードはPython前提)

読了後にできるようになること

  • ネットワークフロー(最大流・最小費用流)を問題の構造から識別して適用できる
  • セグメント木・遅延評価セグメント木の実装と、その上で動的計画法を組み合わせる手法
  • 二分探索の応用パターン(最小値の最大化・平均値最大化)を問題設定から導出できる
  • 動的計画法を木・グラフ・区間など多様な部分問題構造に適用し、高速化テクニックを選択できる
  • 平面走査や尺取り法・償却計算量の考え方を実際の過去問で身につける

本書のキー概念(章解説)

  • 序章:アルゴリズム実技検定と本書の構成について
  • 第 1 章 二分探索 発展 — 最小値の最大化・平均値最大化など、応用パターンを体系的に整理
  • 第 2 章 動的計画法 発展 — 木上DP・DP高速化まで扱い、この1章だけでDPの応用力が大きく底上げされる
  • 第 3 章 頻出テクニック — 変数固定・尺取り法・償却計算量をまとめて習得できる
  • 第 4 章 頻出データ構造・アルゴリズム — UnionFind・LCAなど上級で頻出する構造を一通り押さえる
  • 第 5 章 ネットワークフロー — 最大流・最小費用流はエキスパート水準の頻出テーマ。他の対策書では薄い領域
  • 第 6 章 セグメント木 — 遅延評価まで含め、上位問題で必須の実装を丁寧に解説
  • 第 7 章 セグメント木上の動的計画法(エキスパート編) — セグ木とDPの融合はエキスパート認定の壁となる難所
  • 第 8 章 平面走査(エキスパート編)
  • 第 9 章 難問にチャレンジ!(エキスパート編) — 過去問ベースで実力測定できる

ハイライト

  • 発展的なアルゴリズムやデータ構造を解説・過去問を使った実践的なトレーニング・Pythonによるサンプルコードで、上級・エキスパート合格の点数を勝ち取ろう!(本書が中〜上級層向けの実践志向であることを最も端的に示す記述)

外部からの言及

  • SE経験者の技術書読書録において、PAST上級向けの公式対策書として取り上げられ、ネットワークフローや遅延評価セグメント木を扱う点が『他の競プロ入門書にはない』領域として評価されている(qiita)

編集メモ

Qiita直接言及ほぼなし・likesデータ取得不可。ただし唯一のPAST公式上級〜エキスパート対策書として出版社・AtCoder公式が位置付けており、当該認定を目指す層には代替がない専門書

読む前に押さえておきたいこと

  • AtCoderでの基本的なアルゴリズム実装経験(二分探索・基本的なDP・グラフ探索)
  • Pythonの基本文法と標準ライブラリの使い方
  • PAST初級〜中級レベルの問題で安定して点数を取れる水準

学習のコツ

  • 第5章(ネットワークフロー)と第6章(セグメント木)は競プロの一般書でカバーされにくい領域なので、他書と並行して本書だけを参照する使い方が効率的
  • 章末類題は解答前に必ず自力でアプローチを考え、詰まってから解説を読む。コードを写すだけでは得点力に結びつかない
  • エキスパート編(第7〜9章)は上級編の内容が固まってから取り組む。セグ木+DPの章は特に第6章の理解が前提
  • Pythonサンプルコードを他言語(C++など)で書き直す練習を加えると、本番試験での実行速度の問題に対処しやすくなる
出版社による内容紹介

世界最高峰の競技プログラミングコンテストサイトのAtCoderが主催するアルゴリズム実技検定試験「PAST」の公式対策本! ・試験問題に精通する著者陣による解説 ・最強最速を目指すプログラマー・エンジニア必携 ■アルゴリズム実技検定(PAST)とは AtCoder株式会社が主催する検定試験で、IT人材に求められるプログラミングスキルを可視化することを目的としています。プログラミングの基礎知識から、各種アルゴリズムの解説、数学的な問題解決方法まで、試験対策を行うことでこれからのソフトウェアエンジニアに要求される知識を見につけることができます。 ■PASTの上級〜エキスパート認定まで対応 さまざまなアプローチが考えられるアルゴリズム実技検定の問題において、より適切なアルゴリズムを選択し、高速なプログラムを作成できることを目指します。 ・発展的なアルゴリズムやデータ構造を解説 ・過去問を使った実践的なトレーニング ・Pythonによるサンプルコード 複数のアルゴリズムを用いた解法を身につけ「上級」「エキスパート」合格の点数を勝ち取ろう! CONTENTS --- 序章 アルゴリズム実技検定と本書の構成について [上級編] 第1章 二分探索 発展 第2章 動的計画法 発展 第3章 頻出テクニック 第4章 頻出データ構造・アルゴリズム 第5章 ネットワークフロー 第6章 セグメント木 [エキスパート編] 第7章 セグメント木上の動的計画法 第8章 平面走査 第9章 難問にチャレンジ! 序章 アルゴリズム実技検定と本書の構成について 0.1 試験要項 0.2 本書で使用するプログラミング言語“ Python ” について 0.3 本書の構成 [上級編] 第1章 二分探索 発展 1.1 二分探索を適用できる問題 1.2 最小値の最大化(最大値の最小化) 1.3 平均値最大化・中央値の最大化 1.4 まとめ 第2章 動的計画法 発展 2.1 動的計画法の復習(ナップサック問題) 2.2 前回の情報を持ちながら進めていく動的計画法 2.3 さまざまな「部分問題への分け方」の動的計画法 2.4 動的計画法の高速化のためのテクニック 2.5 木上の動的計画法 2.6 その他の動的計画法 第3章 頻出テクニック 3.1 変数を固定して考えよう 3.2 尺取り法 3.3 償却計算量(ならし計算量) 3.4 章末類題 第4章 頻出データ構造・アルゴリズム 4.1 グラフ理論の用語について 4.2 UnionFind(素集合データ構造) 4.3 最小共通祖先(Lowest Common Ancestor) 4.4 章末類題 第5章 ネットワークフロー 5.1 最大流問題 5.2 最小費用流問題 第6章 セグメント木 6.1 セグメント木(Segment Tree) 6.2 遅延評価セグメント木(Lazy Segment Tree) 6.3 章末類題 [エキスパート編] 第7章 セグメント木上の動的計画法 7.1 問題 7.2 まとめ 7.3 章末類題 第8章 平面走査 8.1 問題 8.2 まとめ 8.3 章末類題 第9章 難問にチャレンジ! 9.1 問題

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

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

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