●第1章 算法設計基礎 11.1 思維的體操 11.2 問題求解常見策略 141.3 高效算法設計舉例 361.4 動態規劃專題 551.5 小結與習題 711.5.1 問題求解策略 721.5.2 高效算法設計 801.5.3 動態規劃 83第2章 數學基礎 862.1 基本計數方法 862.2 遞推關繫 922.3 數論 1012.3.1 基本概念 1022.3.2 模方程 1072.3.3 線性篩 1132.3.4 積性函數與莫比烏斯反演 1162.3.5 篩法求解積性函數 1182.4 組合遊戲 1242.5 概率與數學期望 1302.6 置換及其應用 1352.7 矩陣和線性方程組 1422.8 快速傅裡葉變換(FFT) 1542.9 數值方法 1652.10 小結與習題 1712.10.1 組合計數 1732.10.2 數論 1772.10.3 組合遊戲 1812.10.4 概率 1832.10.5 置換 1842.10.6 矩陣與線性方程組 1862.10.7 快速傅裡葉變換(FFT) 1882.10.8 數值方法 189第3章 實用數據結構 1923.1 基礎數據結構回顧 1923.1.1 抽像數據類型(ADT) 1923.1.2 優先隊列 1943.1.3 並查集 1973.2 區間信息的維護與查詢 1993.2.1 二叉索引樹(樹狀數組) 2003.2.2 RMQ問題 2023.2.3 線段樹(1):點修改 2043.2.4 線段樹(2):區間修改 2073.3 字符串(1) 2193.3.1 Trie 2193.3.2 KMP算法 2223.3.3 Aho-Corasick自動機 2253.4 字符串(2) 2293.4.1 後綴數組 2293.4.2 公共前綴(LCP) 2333.4.3 基於哈希值的LCP算法 2353.4.4 回文的Manacher算法 2383.5 字符串(3) 2403.5.1 後綴自動機的性質 2413.5.2 後綴鏈接樹(Suffix Link Tree) 2413.5.3 後綴自動機的構造算法 2423.6 排序二叉樹 2553.6.1 基本概念 2553.6.2 用Treap實現名次樹 2583.6.3 用伸展樹實現可分裂與合並的序列 2663.7 樹的經典問題與方法 2703.8 動態樹與LCT 2893.9 離線算法 2993.10 kd-Tree 3123.11 可持久化數據結構 3193.12 小結與習題 3313.12.1 基礎數據結構 3323.12.2 區間信息維護 3333.12.3 字符串算法 3353.12.4 排序二叉樹 3383.12.5 樹的經典問題與方法 3393.12.6 動態樹與LCT 3423.12.7 離線算法 3443.12.8 kd-Tree 3473.12.9 可持久化數據結構 348第4章 幾何問題 3514.1 二維幾何基礎 3514.1.1 基本運算 3524.1.2 點和直線 3534.1.3 多邊形 3554.1.4 例題選講 3564.1.5 二維幾何小結 3594.2 與圓和球有關的計算問題 3604.2.1 圓的相關計算 3604.2.2 球面相關問題 3664.3 二維幾何常用算法 3664.3.1 點在多邊形內的判定 3664.3.2 凸包 3684.3.3 半平面交 3724.3.4 平面區域 3784.4 三維幾何基礎 3824.4.1 三維點積 3834.4.2 三維叉積 3844.4.3 三維凸包 3864.4.4 例題選講 3884.4.5 三維幾何小結 3924.5 小結與習題 3934.5.1 基礎題目 3934.5.2 二維幾何計算 3954.5.3 幾何算法 3984.5.4 三維幾何 403第5章 圖論算法與模型 4085.1 基礎題目選講 4085.2 深度優先遍歷 4115.2.1 無向圖的割頂和橋 4135.2.2 無向圖的雙連通分量 4165.2.3 有向圖的強連通分量 4205.2.4 2-SAT問題 4245.3 最短路問題 4285.3.1 再談Dijkstra算法 4285.3.2 再談Bellman-Ford算法 4325.3.3 例題選講 4365.4 生成樹相關問題 4435.5 二分圖匹配 4475.5.1 二分圖優選匹配 4475.5.2 二分圖很好完美匹配 4485.5.3 穩定婚姻問題 4525.5.4 常見模型 4555.6 網絡流問題 4575.6.1 最短增廣路算法 4575.6.2 最小費用優選流算法 4625.6.3 建模與模型變換 4645.6.4 例題選講 4675.7 小結與習題 4725.7.1 基礎知識和算法 4725.7.2 DFS及其應用 4725.7.3 最短路及其應用 4765.7.4 最小生成樹 4775.7.5 二分圖匹配 4795.7.6 網絡流 480第6章 更多算法專題 4846.1 輪廓線動態規劃 4846.2 嵌套和分塊數據結構 4906.3 暴力法專題 5006.3.1 路徑尋找問題 5006.3.2 對抗搜索 5056.3.3 準確覆蓋問題和DLX算法 5106.4 幾何專題 5166.4.1 仿射變換與矩陣 5166.4.2 離散化和掃描法 5186.4.3 運動規劃 5276.5 數學專題 5296.5.1 小專題集錦 5306.5.2 線性規劃 5326.6 淺談代碼設計與靜態查錯 5336.6.1 簡單的Bash 5336.6.2 《仙劍奇俠傳四》之最後的戰役 5426.7 小結與習題 5486.7.1 輪廓線上的動態規劃 5486.7.2 數據結構綜合應用 5506.7.3 暴力法 5576.7.4 幾何專題 5626.7.5 數學專題 5676.7.6 代碼組織與調試 569附錄 Java、C#和Python語言簡介 575主要參考書目 582
《算法競賽入門經典——訓練指南(升級版)》是《算法競賽入門經典(第2版)》一書的重要補充,旨在補充原書中沒有涉及或者講解得不夠詳細的內容,從而構建一個更完整的知識體繫。本書通過大量有針對性的題目,讓抽像復雜的算法和數學具體化、實用化。《算法競賽入門經典——訓練指南(升級版)》共包括6章,分別為算法設計基礎、數學基礎、實用數據結構、幾何問題、圖論算法與模型以及更多算法專題。全書通過206道例題深入淺出地介紹了上述領域的各個知識點、經典思維方式以及程序實現的常見方法和技巧,並在章末給出了豐富的分類習題,供讀者查漏補缺和強化學習效果。《算法競賽入門經典——訓練指南(升級版)》題目多選自近年來ACM/ICPC區域賽和總決賽真題,內容全面,信息量大,覆蓋了常見算法競賽中的大多數細分知識點。書中還給出了所有重要的經典算法的完整程序,以及重要例題的核心代碼,既適合選手自學,也方便院校和培訓機構組等