世界最高峰の競技プログラミングコンテストサイトの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 問題