《算法競賽入門經典——訓練指南》是2012年10月清華大學出版社出版的圖書,作者是劉汝佳、陳鋒。
基本介紹
- 書名:算法競賽入門經典——訓練指南
- 作者:劉汝佳、陳鋒
- ISBN:9787302291077
- 定價:52.80元
- 出版社:清華大學出版社
- 出版時間:2012年10月
內容簡介,圖書目錄,
內容簡介
本書是《算法競賽入門經典》的重要補充,旨在補充原書中沒有涉及或者講解得不夠詳細的內容,從而構建一個較完整的知識體系,並且用大量有針對性的題目,讓抽象複雜的算法和數學具體化、實用化。
本書共6章,分別為算法設計基礎、數學基礎、實用數據結構、幾何問題、圖論算法與模型和更多算法專題,全書通過近200道例題深入淺出地介紹了上述領域的各個知識點、經典思維方式以及程式實現的常見方法和技巧,並在章末和附錄中給出了豐富的分類習題,供讀者查漏補缺和強化學習效果。
本書題目多選自近年來ACM/ICPC區域賽和總決賽真題,內容全面,信息量大,覆蓋了常見算法競賽中的大多數細分知識點。書中還給出了所有重要的經典算法的完整程式,以及重要例題的核心代碼,既適合選手自學,也方便教練組織學習和訓練。
圖書目錄
第1章 算法設計基礎 1
1.1 思維的體操 1
1.2 問題求解常見策略 15
1.3 高效算法設計舉例 39
1.4 動態規劃專題 60
1.5 小結與習題 77
第2章 數學基礎 103
2.1 基本計數方法 103
2.2 遞推關係 109
2.3 數論 119
2.3.1 基本概念 119
2.3.2 模方程 126
2.4 組合遊戲 132
2.5 機率與數學期望 139
2.6 置換及其套用 144
2.7 矩陣和線性方程組 151
2.8 數值方法簡介 163
2.9 小結與習題 170
第3章 實用數據結構 186
3.1 基礎數據結構回顧 186
3.1.1 抽象數據類型(ADT) 186
3.1.2 優先佇列 188
3.1.3 並查集 191
3.2 區間信息的維護與查詢 194
3.2.1 二叉索引樹(樹狀數組) 194
3.2.2 RMQ問題 197
3.2.3 線段樹(1):點修改 199
3.2.4 線段樹(2):區間修改 202
3.3 字元串(1) 208
3.3.1 Trie 208
3.3.2 KMP算法 211
3.3.3 Aho-Corasick自動機 214
3.4 字元串(2) 219
3.4.1 後綴數組 219
3.4.2 最長公共前綴(LCP) 222
3.4.3 基於哈希值的LCP算法 224
3.5 排序二叉樹 227
3.5.1 基本概念 227
3.5.2 用Treap實現名次樹 230
3.5.3 用伸展樹實現可分裂與合併的序列 239
3.6 小結與習題 244
第4章 幾何問題 254
4.1 二維幾何基礎 254
4.1.1 基本運算 255
4.1.2 點和直線 256
4.1.3 多邊形 258
4.1.4 例題選講 259
4.1.5 二維幾何小結 263
4.2 與圓和球有關的計算問題 264
4.2.1 圓的相關計算 264
4.2.2 球面相關問題 269
4.3 二維幾何常用算法 270
4.3.1 點在多邊形內判定 270
4.3.2 凸包 271
4.3.3 半平面交 276
4.3.4 平面區域 282
4.4 三維幾何基礎 286
4.4.1 三維點積 287
4.4.2 三維叉積 288
4.4.3 三維凸包 290
4.4.4 例題選講 292
4.4.5 三維幾何小結 295
4.5 小結與習題 296
第5章 圖論算法與模型 307
5.1 基礎題目選講 307
5.2 深度優先遍歷 310
5.2.1 無向圖的割頂和橋 312
5.2.2 無向圖的雙連通分量 314
5.2.3 有向圖的強連通分量 319
5.2.4 2-SAT問題 323
5.3 最短路問題 327
5.3.1 再談Dijkstra算法 327
5.3.2 再談Bellman-Ford算法 332
5.3.3 例題選講 335
5.4 生成樹相關問題 343
5.5 二分圖匹配 347
5.5.1 二分圖最大匹配 347
5.5.2 二分圖最佳完美匹配 348
5.5.3 穩定婚姻問題 352
5.5.4 常見模型 355
5.6 網路流問題 357
5.6.1 最短增廣路算法 358
5.6.2 最小費用最大流算法 363
5.6.3 建模與模型變換 365
5.6.4 例題選講 368
5.7 小結與習題 372
第6章 更多算法專題 383
6.1 輪廓線動態規劃 383
6.2 嵌套和分塊數據結構 389
6.3 暴力法專題 395
6.3.1 路徑尋找問題 395
6.3.2 對抗搜尋 400
6.3.3 精確覆蓋問題和DLX算法 406
6.4 幾何專題 412
6.4.1 仿射變換與矩陣 412
6.4.2 離散化和掃描法 414
6.4.3 運動規劃 423
6.5 數學專題 425
6.5.1 小專題集錦 425
6.5.2 快速傅立葉變換(FFT) 428
6.5.3 線性規劃 430
6.6 淺談代碼設計與靜態查錯 431
6.6.1 簡單的Bash 431
6.6.2 《仙劍奇俠傳四》之最後的戰役 440
6.7 小結與習題 447
附錄A 訓練指南:使用UVa/LA題庫 481
A.1 UVa線上比賽推薦 481
A.2 LA套題(ACM/ICPC真題)推薦 482
A.3 UVa線上比賽單題推薦 483
附錄B Java、C#和Python語言簡介 505
B.1 Java 505
B.2 C# 507
B.3 Python 509