程序設計競賽訓練營:算法與實踐

邱秋

  • 出版商: 人民郵電
  • 出版日期: 2022-03-01
  • 定價: $599
  • 售價: 8.5$509
  • 語言: 簡體中文
  • 頁數: 346
  • ISBN: 7115579849
  • ISBN-13: 9787115579843
  • 相關分類: C++ 程式語言程式語言
  • 立即出貨

  • 程序設計競賽訓練營:算法與實踐-preview-1
  • 程序設計競賽訓練營:算法與實踐-preview-2
程序設計競賽訓練營:算法與實踐-preview-1

買這商品的人也買了...

商品描述

本書是以大學生程序設計競賽為基礎、面向已有C1+入門知識且想要進一步學習的讀者編寫的 C++進階訓練指南。全書分為回湖法、圖、動態規劃、 網格等部分。回湖法部分介紹單向搜索和雙向搜索,給出高級搜索的技巧;圖部分分為圖遍歷和圖算法章節,先介紹圖遍歷的方法,再以最小生成樹問題、單源最短路徑問題、多源最短路徑問題、網絡流問題中的經典算法為例,介紹了十餘種算法的原理和相關應用;動態規劃部分逐一介紹了集合型、區間型、圖論型、概率型、非典型動態規劃,並介紹了空間、時間上的優化技巧,以及相應的備忘、鬆弛技巧;網格部分作為獨立的專題匯集了與網格相關的各種習題

本書適合有意參加大學生程序設計競賽的本科生、研究生閱讀,對有意參加信息學奧林匹克競賽的中學生具有參考價值。

作者簡介

邱秋,自学计算机技术,并于2004年和2006年分别取得了全国计算机技术与软件专业技术资格考试中的程序员和软件工程师的证书。对数据库技术感兴趣,在住院医师实习期间曾帮助科室开发了一款对肾衰竭腹膜透析患者进行健康随访的软件,在工作期间开发了数字营区、局域网考核等软件。爱好算法,酷爱读书。博客:https://blog.csdn.net/metaphysis

目錄大綱

第 1章 回溯法 1

1.1 八皇後問題 1

1.2 搜索 10

1.2.1 單向搜索 10

1.2.2 雙向搜索 16

1.3 剪枝 17

1.3.1 正方形剖分 26

1.3.2 關燈問題 27

1.4 15數碼問題 29

1.5 小結 38

第 2章 圖遍歷 39

2.1 基本概念 39

2.1.1 圖的屬性 39

2.1.2 歐拉公式 40

2.1.3 路與連通 40

2.2 圖的表示 41

2.2.1 鄰接矩陣 41

2.2.2 邊列表和前向星 41

2.2.3 鄰接表 42

2.2.4 鏈式前向星 43

2.3 圖遍歷 44

2.3.1 廣度優先遍歷 44

2.3.2 深度優先遍歷 50

2.4 圖遍歷的應用 53

2.4.1 圖的連通性 53

2.4.2 最短路徑 54

2.4.3 最長簡單路徑 56

2.4.4 圖的著色 57

2.4.5 最近公共祖先 57

2.4.6 割頂 65

2.4.7 割邊 68

2.4.8 強連通分支 70

2.4.9 半連通分支 77

2.4.10 2-SAT 78

2.4.11 圖的直徑 83

2.4.12 樹的重心 84

2.5 拓撲排序 85

2.6 小結 87

第3章 圖算法 89

3.1 基本概念 89

3.2 圖的迴路 90

3.2.1 歐拉回 90

3.2.2 中國投遞員問題 104

3.2.3 哈密頓回 105

3.2.4 旅行商問題 107

3.3 最小生成樹 107

3.3.1 Prim算法 107

3.3.2 Kruskal算法 109

3.3.3 最小生成樹的擴展問題 111

3.3.4 度限制最小生成樹 111

3.3.5 次最優最小生成樹 114

3.4 最短路徑問題 118

3.4.1 Moore-Dijkstra算法 118

3.4.2 Bellman-Ford算法 126

3.4.3 Floyd-Warshall算法 130

3.4.4 傳遞閉包 132

3.4.5 最小化的最大距離 134

3.4.6 差分約束系統 134

3.4.7 第K短路徑問題 138

3.5 網絡流問題 140

3.5.1 基本概念 141

3.5.2 Ford-Fulkerson方法 142

3.5.3 Edmonds-Karp算法 144

3.5.4 Dinic算法 149

3.5.5 ISAP算法 153

3.5.6 最小截問題 158

3.5.7 最小費用最大流問題 159

3.6 邊獨立集與二部圖匹配 161

3.6.1 網絡流解法 162

3.6.2 Hungarian算法 164

3.6.3 Hopcroft-Karp算法 169

3.6.4 Gale-Shapley算法 171

3.6.5 Edmonds算法 172

3.7 二部圖加權完備匹配 176

3.7.1 網絡流解法 176

3.7.2 Kuhn-Munkres算法 177

3.8 點支配集、點覆蓋集、點獨立集 185

3.8.1 點支配集 185

3.8.2 點覆蓋集 185

3.8.3 點獨立集與最大團 188

3.9 路徑覆蓋和邊覆蓋 188

3.9.1 最小路徑覆蓋 188

3.9.2 最小邊覆蓋 189

3.10 樹的相關問題求解 189

3.10.1 最小點支配 189

3.10.2 最小點覆蓋 190

3.10.3 最大點獨立 191

3.11 小結 191

第4章 動態規劃 193

4.1 背包問題 193

4.1.1 01背包問題 193

4.1.2 完全背包問題 197

4.1.3 多重背包問題 197

4.1.4 背包問題擴展 198

4.2 備忘 200

4.2.1 3n + 1問題 201

4.2.2 正交範圍查詢 203

4.2.3 最大正方形(長方形) 203

4.2.4 整數劃分 206

4.2.5 博弈樹 206

4.2.6 備忘與遞推 210

4.3 鬆弛 217

4.3.1 Moore-Dijkstra算法 218

4.3.2 Bellman-Ford算法 220

4.3.3 Floyd-Warshall算法 220

4.4 集合型動態規劃 222

4.5 區間型動態規劃 229

4.5.1 矩陣鏈乘法 229

4.5.2 石子合並問題 231

4.6 圖論型動態規劃 238

4.6.1 路徑計數 241

4.6.2 樹形動態規劃 243

4.6.3 旅行商問題 246

4.6.4 雙調歐幾里得旅行商問題 247

4.7 概率型動態規劃 250

4.8 非典型動態規劃 255

4.9 動態規劃的優化 257

4.9.1 空間優化 257

4.9.2 狀態優化 258

4.9.3 二進制優化 262

4.9.4 單調隊列優化 262

4.9.5 斜率優化 265

4.9.6 四邊形不等式優化 268

4.10 子序列和子串問題 271

4.10.1 最短編輯距離 271

4.10.2 最長公共子序列 274

4.10.3 最長公共子串 276

4.10.4 最長遞增子序列 277

4.10.5 最長不重復子串 280

4.10.6 最長迴文子串 281

4.10.7 最大連續子序列和(積) 285

4.11 貪心算法 287

4.11.1 部分背包問題 288

4.11.2 紙幣找零問題 289

4.11.3 硬幣兌換問題 292

4.11.4 霍夫曼編碼 293

4.11.5 最優策略選擇 295

4.12 小結 296

第5章 網格 297

5.1 矩形網格 297

5.1.1 網格行走 297

5.1.2 Flood-Fill算法 299

5.1.3 國際象棋棋盤 302

5.1.4 騎士周游問題 304

5.2 三角形網格 309

5.3 六邊形網格 312

5.4 經度與緯度 312

5.5 小結 313

附錄A 如何使用UVa OJ 314

附錄B ASCII表 317

附錄C C++運算符優先級 318

附錄D 習題索引 319

參考資料 320