プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~|秋葉拓哉|岩田陽一|北川宜稔|マイナビ|電子書籍|shinanobook.com|シナノ

プログラミングコンテストチャレンジブック [第2版]

立ち読みする
立ち読みする

プログラミングコンテスト
チャレンジブック [第2版]

問題解決のアルゴリズム活用力とコーディングテクニックを鍛える

秋葉拓哉 岩田陽一 北川宜稔

出版社:
マイナビ
判型:
B5変判
ページ数:
368ページ
発行日:
2012/01/27 
発売日:
2012/01/28 
対応端末:
PC, iPhone, iPad, Android, Tablet

PC版:ストリーミング対応
iPhone版・iPad版・Android版・Tablet版:ダウンロード5回

購入(¥2,800 税込)

還元マイル:280マイル

印刷した本を購入希望の方はこちら!





[本当の力がつくアルゴリズムの本]
プログラミングコンテストの問題を通してアルゴリズムのしくみや考え方を楽しく習得。

プログラミングコンテストにて世界トップレベルの成績を誇る著者たちが、コンテストで得た知識やノウハウを難易度別にまとめました。初心者が取り組めるアルゴリズムの基本問題から、世界中のプログラマを悩ませた難問まで。“プログラミング脳”を活性化するための問題を厳選して紹介します。

「プログラミングコンテスト」は上級者だけのものではありません。多くの場合は初級者向けの問題も用意され、幅広い参加者が楽しめるよう配慮されています。良い成績を収められなくてもプログラミング能力を向上させることにつながり、何より、楽しく充実した時間を過ごせます!

本書を読むにあたって必要なものは「基礎的なプログラミング能力」だけです。掲載したソースコードはC++ですが基本的な機能のみで記述しており、C++での開発経験がなくても読みやすいように配慮しました。
難易度別に分けて構成し、内容の多いトピックは難易度ごとに何度か扱っています。各トピックは説明と例題からなっています。

第2版となる本書では、4つの新しいトピック「平面・空間を扱う“計算幾何”」「工夫を凝らして賢く“探索”」「分けて解いてまとめる!“分割統治法”」「“文字列”を華麗に扱う」を追加した他、より理解を深めるための練習問題の紹介や、さらなる高みを目指す読者のために発展的内容の紹介を行い、より一層充実した内容になっています。

現役プログラマだけでなくプログラマを目指している方にもぜひ読んでいただきたい1冊です!

プログラミングコンテストチャレンジブック [第2版] ~問題解決のアルゴリズム活用力とコーディングテクニックを鍛える~
秋葉拓哉|岩田陽一|北川宜稔|マイナビ


 CHAPTER 1 いざチャレンジ! でもその前に--準備編
 1-1 プログラミングコンテストって何?
 1-2 どんなコンテストがあるの?
 ・世界規模のコンテスト--Google Code Jam(GCJ)
 ・上位ランクを目指せ!--TopCoder
 ・最も歴史のあるコンテスト--ACM/ICPC
 ・中学・高校生向けの情報オリンピック--JOI/IOI
 ・Web上で自動採点--オンラインジャッジ
 1-3 この本での進め方
 本書で扱う内容について / 使用する言語について / 問題の扱いについて / プログラムについて / さらなる練習方法
 1-4 どうやって解答を提出するの?
  POJへの提出の仕方 / GCJへの提出の仕方
 1-5 効率的なアルゴリズムを目指すには
  計算量って何だろう / 実行時間について
 1-6 気楽にウォーミングアップ
  まずは簡単な問題から / POJの問題「Ants」 / ハードルが上がった「くじびき」
 
 CHAPTER 2 基礎からスタート!--初級編
 2-1 すべての基本“全探索”
  再帰関数 / スタック / キュー / 深さ優先探索 / 幅優先探索 / 特殊な状態の列挙 / 枝刈り
 2-2 猪突猛進!“貪欲法”
  硬貨の問題 / 区間の問題 / 辞書順最小の問題 / その他の例題
 2-3 値を覚えて再利用“動的計画法”
  探索のメモ化と動的計画法 / 漸化式を工夫する / 計算問題に対するDP
 2-4 データを工夫して記憶する“データ構造”
  木・二分木 / プライオリティキューとヒープ / 二分探索木 / Union-Find木
 2-5 あれもこれも実は“グラフ”
  グラフとは / グラフの表現 / グラフの探索 / 最短路問題 / 最小全域木 / 応用問題
 2-6 数学的な問題を解くコツ
  ユークリッドの互除法 / 素数に関する基本的なアルゴリズム / 余りの計算 / べき乗を高速に計算する
 2-7 GCJの問題に挑戦してみよう(1)
  Minimum Scalar Product / Crazy Rows / Bribe the Prisoners / Millionaire
 [練習問題]
 
 CHAPTER 3 ここで差がつく!--中級編
 3-1 値の検索だけじゃない!“二分探索”
  ソート列から値を探す / 解を仮定し可能か判定 / 最小値の最大化 / 平均最大化
 3-2 厳選! 頻出テクニック(1)
  しゃくとり法 / 反転 / 弾性衝突 / 半分全列挙 / 座標圧縮
 3-3 さまざまなデータ構造を操ろう
  セグメント木 / Binary Indexed Tree / バケット法と平方分割
 3-4 動的計画法を極める!
  ビットDP / 行列累乗 / データ構造を用いて高速化
 3-5 水を流して問題を解く“ネットワークフロー”
  最大流 / 最小カット / 二部マッチング / 一般マッチング / マッチング・辺カバー・安定集合・点カバー / 最小費用流 / 応用問題
 3-6 平面・空間を扱う“計算幾何”
  幾何の基本 / ギリギリを考えよ / 平面走査 / 凸包 / 数値積分
 3-7 GCJの問題に挑戦してみよう(2)
  Numbers / No Cheating / Stock Charts / Watering Plants / Number Sets / Wi-fi Towers
 [練習問題]
 
 CHAPTER 4 さらに極める!--上級編
 4-1 より複雑な数学的問題
  行列 / modの世界 / 数え上げ / 対称性のある数え上げ
 4-2 ゲームの必勝法を編み出せ!
  ゲームと必勝法 / Nim / Grundy数
 4-3 グラフマスターへの道
  強連結成分分解 / 2-SAT / LCA
 4-4 厳選! 頻出テクニック(2)
  スタックの利用 / デックの利用 / ダブリング
 4-5 工夫を凝らして賢く探索
  枝狩り / A*とIDA*
 4-6 分けて解いてまとめる!“分割統治法”
  列の分割統治法 / ツリーの分割統治法 / 平面の分割統治法
 4-7 文字列を華麗に扱う
  文字列に対する動的計画法 / 文字列検索 / 接尾辞配列
 4-8 GCJの問題に挑戦してみよう(3)
  Mine Layer / Year of More Code Jam / Football Team / Endless Knight / The Year of Code Jam
 [練習問題]
 
 ・本書で扱わなかった発展的トピック
 ・本書に掲載した問題リスト
 ・索引
 ・参考文献
 
 [Column]
 タック領域とヒープ領域 / 貪欲法のアルゴリズムの証明 / ハフマン符号 / memsetによる初期化 / 全探索の書き方 / 初期化忘れに注意 / いろいろなDP / DPにおける配列の再利用 / lower_bound / 平衡二分木 / 証明や法則などについて / 二分探索の収束判定 / 集合の整数表現 / Sparse TableによるRMQ / 領域木 / 完全マッチングの個数 / もっと高速な漸化式の計算 / さまざまなグラフに対する最大流 / 高速な最大流アルゴリズム / さまざまなグラフに対する最小費用流 / 線形計画問題 / 計算誤差 / 整数計画問題 / Trie / より高速な前処理 / 多倍長演算



ページ先頭へ