本書是算法競賽經典教程,由IOI三屆金牌獲得者傾力打造,系統(tǒng)講解算法競賽中的77個核心技巧和解題思路,旨在幫助讀者提升算法設計能力與邏輯思維。
本書共分10章,內容包括算法與時間復雜度、前綴和、二分查找、動態(tài)規(guī)劃、數學問題、思維技巧、啟發(fā)式、數據結構和查詢處理、圖算法、綜合問題。書后配有20道精選的綜合測試題,可幫助讀者檢驗和鞏固所學知識。300余幅全彩插圖,將抽象概念轉化為視覺化表達,即使零基礎讀者也能輕松領悟精髓;153道例題與應用問題均為原創(chuàng)設計,剔除非核心要素,示例代碼精簡高效,特別適合通過“代碼臨摹”方式學習的讀者。
更多科學出版社服務,請掃碼獲取。
1991年6月畢業(yè)湘潭大學計算機科學系軟件專業(yè),獲工學學士學位;2005年畢業(yè)于中南大學信息工程學院,獲軟件工程碩士學位。1991年任雅禮中學信息學奧賽總教練,2016年任雅禮天心書院中學校長,2020年任深圳北理莫斯科大學附屬中學校長。計算機科學與技術主編《CCF中學生計算機程序設計基礎篇》等著作10本,發(fā)表論文30多篇,主持編寫了《全國中學生計算機程序設計評級標準》和《全國信息學奧賽考試大綱》。兼任長沙市信息技術工作室首席名師,長沙市農村(望城二中)名師工作站站長,湖南省骨干教師培訓專家,湖南省特級教師協(xié)會常務理事,全國信息學奧賽教師發(fā)展委員會主席等。
目錄
算法競賽入門
序 章
序1 什么是算法競賽? 2
序2 有哪些競賽? 3
序3 算法競賽的核心競爭力是什么? 5
序4 本書的使用方法 6
算法與時間復雜度
第1章
1.1 導入問題 17
1.2 枚舉(1) 20
1.3 枚舉(2) 23
1.4 二進制 26
1.5 挑戰(zhàn)問題 30
總結 37
前綴和
第2章
2.1 一維前綴和(1) 42
2.2 一維前綴和(2) 46
2.3 二維前綴和(1) 50
2.4 二維前綴和(2) 56
2.5 挑戰(zhàn)問題 61
總結 68
二分查找
第3章
3.1 數組的二分查找 72
3.2 根據答案進行二分查找 77
3.3 雙指針法 81
3.4 折半枚舉 85
3.5 挑戰(zhàn)問題 90
總結 93
第4章 動態(tài)規(guī)劃
4.1 動態(tài)規(guī)劃的基礎 98
4.2 動態(tài)規(guī)劃的回溯 101
4.3 二維DP(1):部分和問題 105
4.4 二維DP(2):背包問題 109
4.5 二維DP(3):最長公共子序列問題 114
4.6 二維DP(4):區(qū)間DP 119
4.7 優(yōu)化技巧 123
4.8 狀態(tài)壓縮DP 128
4.9 最長遞增子序列問題 133
4.10 挑戰(zhàn)問題 138
總結 141
第5章 數學問題
5.1 素數判定 145
5.2 最大公約數 150
5.3 取模運算(1):基礎 154
5.4 取模運算(2):冪 158
5.5 取模運算(3):除法 161
5.6 容斥原理 164
5.7 游戲(1):必勝法 168
5.8 游戲(2):Nim理論 172
5.9 游戲(3):Grundy數 177
5.10 挑戰(zhàn)問題 181
總結 184
第6章 思維技巧
6.1 思考奇偶性 189
6.2 計數貢獻法 192
6.3 思考上限值 196
6.4 思考下一步 199
6.5 思考個數 205
6.6 逆向思維 209
6.7 固定并枚舉 213
6.8 重新表述問題 217
6.9 改進保存數據的方式 220
6.10 關注不變量 224
總結 227
第7章 啟發(fā)式
7.1 貪心算法 231
7.2 局部搜索算法 235
7.3 模擬退火算法 240
7.4 集束搜索 243
7.5 挑戰(zhàn)問題 251
總結 265
第8章 數據結構和查詢處理
8.1 棧 270
8.2 隊 列 274
8.3 優(yōu)先隊列 278
8.4 關聯數組 282
8.5 集合管理(僅限C++) 286
8.6 哈希字符串 290
8.7 倍增法 295
8.8 線段樹:RMQ 299
8.9 線段樹:RSQ 308
8.10 挑戰(zhàn)問題 312
總結 317
第9章 圖算法
9.1 圖的實現方法 326
9.2 深度優(yōu)先搜索 329
9.3 廣度優(yōu)先搜索 333
9.4 Dijkstra算法 338
9.5 樹的動態(tài)規(guī)劃 346
9.6 Union-Find樹 350
9.7 最小生成樹問題 358
9.8 最大流問題 362
9.9 二分圖匹配問題 372
9.10 挑戰(zhàn)問題 376
總結 383
第10章 綜合問題
10.1 綜合問題(1) 388
10.2 綜合問題(2) 392
10.3 綜合問題(3) 396
10.4 綜合問題(4) 400
10.5 綜合問題(5) 404
10.6 綜合問題(6) 408
10.7 綜合問題(7) 412
本書總結 417
能力測試題 419
終章 能力提升之道
終1 積極參加各種比賽 426
終2 刷真題 427
終3 準備庫 428
終4 “算法競賽經典90問”挑戰(zhàn)指南 429
終5 從挫折到金牌的成長之路 430
參考文獻 433