商品簡介
作者簡介
陳小玉
高級程序員,主要研究方向為算法優化和機器學習。出版著作有《算法訓練營》,所教學生多次獲得ACM-ICPC、藍橋杯等算法競賽獎項。
名人推薦
這是一本能讓算法變有趣的進階指南!書中用大量精美插圖和競賽例子,帶你輕鬆掌握數據結構和算法的核心技巧。從解決“超級馬裡奧”關卡到分析“DNA序列匹配”,每章都像解鎖遊戲關卡一樣,把複雜樹結構、動態規劃、字符串匹配等知識拆解成簡單易懂的步驟,特別適合想提升實戰能力的讀者。
全書包含56個訓練項目,邊學邊練:比如用“病毒侵襲”案例理解自動匹配文本的訣竅,通過“最近的取款機”問題快速查找地圖上的目標。書中還貼心標注了不同難度的知識點,無論你是中學生嘗試信息學競賽,還是大學生準備面試刷題,都能找到適合自己的學習路徑。
如果你對算法感興趣卻害怕枯燥的理論,這本書就是為你準備的!它像一位耐心的老師,用圖畫解釋原理,用真實題目鞏固方法,還會教你如何把知識用在編程比賽和解決實際問題中。並且,本書搭配詳細的代碼示例和答案解析,助力讀者一步步成長為算法小達人。
快翻開這本書,開啟你的算法冒險吧!
序
目前,信息技術已被廣泛應用於互聯網、金融、航空、軍事、醫療等各個領域,未來的應用將更加廣泛和深入。並且,很多中小學都開設了計算機語言課程,越來越多的中小學生對編程、算法感興趣,甚至在NOIP、NOI等算法競賽中大顯身手,進入名校深造。對信息技術感興趣的大學生通常會參加ACM-ICPC、CCPC、藍橋杯等算法競賽,其獲獎者更是被各大名企所青睞。
學習算法,不僅可以幫助我們具備較強的思維能力及解決問題的能力,還可以幫助我們快速學習各種新技術,擁有超強的學習能力。
- 寫作背景
很多讀者都覺得算法太難,市面上晦澀難懂的各種教材更是“嚇退”了一大批讀者。實際上,算法並沒有我們想象中那麼難,反而相當有趣。
每當有學生說看不懂某個算法的時候,筆者就會建議其畫圖。畫圖是學習算法最好的方法,因為它可以把抽象難懂的算法展現得生動形象、簡單易懂。筆者曾出版《算法訓練營:海量圖解 競賽刷題》(入門篇)和《算法訓練營:海量圖解 競賽刷題》(進階篇),很多讀者非常喜歡其中的海量圖解,更希望看到這兩本書的全彩版。經過一年的籌備,筆者對上述書中的所有圖片都重新進行了繪製和配色,並精選、修改、補充和拆分上述書中的內容,形成了《算法訓練營:入門篇》(全彩版)、《算法訓練營:提高篇》(全彩版)和《算法訓練營:進階篇》(全彩版),本書就是其中的《算法訓練營:進階篇》(全彩版)。在此衷心感謝各位讀者的大力支持!
本書詳細講解數據結構和算法進階知識,還增加了可持久化數據結構方面的內容。本書不是知識點的堆砌,也不是粘貼代碼而來的簡單題解,而是將知識點講解和對應的競賽實例融會貫通,讀者可以在輕鬆閱讀本書的同時進行刷題實戰,在實戰中體會算法的妙處,感受算法之美。
- 學習建議
學習算法的過程,應該是通過大量實例充分體會遇到問題時該如何分析:用什麼數據結構,用什麼算法和策略,算法複雜度如何,是否有優化的可能,等等。這裡有以下幾個建議。
第1個建議:學經典,多理解。
算法書有很多,初學者最好選擇圖解較多的入門書,當然,也可以選擇多本書,從多個角度進行對比和學習。先看書中的圖解,理解各種經典問題的求解方法,如果還不理解,則可以看視頻講解,理解之後再看代碼,嘗試自己動手上機運行。如有必要,則可以將算法的求解過程通過圖解方式展示出來,以加深對算法的理解。
第2個建議:看題解,多總結。
在掌握書中的經典算法之後,可以在刷題網站上進行專項練習,比如練習貪心算法、分治算法、動態規劃等方面的題目。算法比數據結構更加靈活,對同一道題目可以用不同的算法解決,算法複雜度也不同。如果想不到答案,則可以看題解,比較自己的想法與題解的差距。要多總結題目類型及最優解法,找相似的題目並自己動手解決問題。
第3個建議:舉一反三,靈活運用。
通過專項刷題做到“見多識廣”,總結常用的算法模板,熟練應用套路,舉一反三,靈活運用,逐步提升刷題速度,力爭“bug free”(無缺陷)。
- 本書特色
本書具有以下特色。
(1)完美圖解,通俗易懂。本書對每個算法的基本操作都有全彩圖解。通過圖解,許多問題都變得簡單,可迎刃而解。
(2)實例豐富,簡單有趣。本書結合了大量競賽實例,講解如何用算法解決實際問題,使複雜難懂的問題變得簡單有趣,可幫助讀者輕鬆掌握算法知識,體會其中的妙處。
(3)深入淺出,透析本質。本書透過問題看本質,重點講解如何分析和解決問題。本書採用了簡潔易懂的代碼,對數據結構的設計和算法的描述全面、細致,而且有算法複雜度分析及優化過程。
(4)實戰演練,循序漸進。本書在講解每個算法後都進行了實戰演練,使讀者在實戰中體會算法的設計思路和使用技巧,從而提高獨立思考、動手實踐的能力。書中有豐富的練習題和競賽題,可幫助讀者及時檢驗對所學知識的掌握情況,為從小問題出發且逐步解決大型複雜性工程問題奠定基礎。
(5)網絡資源,技術支持。本書為讀者提供了配套源碼、課件、視頻,並提供了博客、微信群、QQ群等技術支持途徑,可隨時為讀者答疑解惑。
- 建議和反饋
寫書是極其瑣碎、繁重的工作,盡管筆者已經竭力使本書內容、網絡資源和技術支持接近完美,但仍然可能存在很多漏洞和瑕疵。歡迎讀者反饋關於本書的意見,因為這有利於我們改進和提高,以幫助更多的讀者。如果對本書有意見和建議,或者有問題需要幫助,則都可以加入QQ群281607840,也可以致信rainchxy@126.com與筆者交流,筆者將不勝感激。
對於本書提供的讀者資源,可參照本書封底的“讀者服務”信息獲取。
- 致謝
感謝筆者的家人和朋友在本書寫作過程中提供的大力支持。感謝電子工業出版社工作嚴謹、高效的張國霞編輯,她的認真、負責促成了本書的早日出版。感謝中國計算機學會常務理事李軒涯老師的幫助。感謝碼蹄集平臺的大力支持。感謝提供了寶貴意見的同事們。感謝提供了技術支持的同學們。感恩遇到這麼多良師益友!
目次
第1章 數據結構進階 1
1.1 分塊算法 1
1.1.1 預處理 2
1.1.2 區間更新 2
1.1.3 區間查詢 3
訓練1 超級馬裡奧 4
訓練2 序列操作 7
1.2 跳躍表 9
1.2.1 跳躍表的結構體定義 11
1.2.2 查找 12
1.2.3 插入 13
1.2.4 刪除 14
訓練1 第k大的數 15
訓練2 郁悶的出納員 21
第2章 字符串算法進階 24
2.1 AC自動機 24
2.1.1 創建字典樹 24
2.1.2 創建AC自動機 25
2.1.3 模式匹配 27
訓練1 病毒侵襲 28
訓練2 DNA序列 30
2.2 後綴數組 34
2.2.1 基數排序 34
2.2.2 後綴數組詳解 41
2.2.3 後綴數組的應用 50
訓練1 牛奶模式 57
訓練2 音樂主題 60
第3章 樹上操作 62
3.1 樹鏈剖分 62
3.1.1 預處理 63
3.1.2 求解最近公共祖先 63
3.1.3 樹鏈剖分與線段樹 66
訓練1 樹上距離 71
訓練2 樹上操作 73
3.2 點分治 76
3.2.1 樹的重心 76
3.2.2 重心分解 77
訓練1 樹上兩個節點之間的路徑數 77
訓練2 遊船之旅 83
3.3 邊分治 88
3.3.1 重建樹 88
3.3.2 求解中心邊 89
3.3.3 中心邊分解 90
訓練1 樹上查詢 91
訓練2 樹上兩個節點之間的路徑數 100
第4章 複雜樹 104
4.1 KD樹 104
4.1.1 創建KD樹 104
4.1.2 搜索m近鄰 106
訓練1 最近的取款機 107
訓練2 最近鄰m點 110
4.2 左偏樹 112
4.2.1 左偏樹的性質 112
4.2.2 基本操作 114
訓練1 猴王 120
訓練2 小根堆 123
4.3 動態樹 125
4.3.1 LCT的性質 126
4.3.2 LCT的基本操作 127
訓練1 動態樹的異或和 136
訓練2 動態樹的最值 139
4.4 樹套樹 142
4.4.1 線段樹套平衡樹 142
4.4.2 線段樹套線段樹 143
訓練1 動態區間問題 143
訓練2 打馬賽克 149
第5章 可持久化數據結構 156
5.1 可持久化線段樹 156
訓練1 超級馬裡奧 163
訓練2 記憶重現 167
5.2 可持久化字典樹 172
訓練 最大異或和 173
第6章 圖論算法進階 180
6.1 EK算法 183
訓練 排水系統 188
6.2 Dinic算法 188
訓練 電力網絡 193
6.3 ISAP算法 195
訓練 美味佳肴 200
6.4 二分圖匹配 201
6.4.1 最大匹配算法 202
6.4.2 匈牙利算法 202
訓練1 完美的牛棚 206
訓練2 逃脫 207
6.5 最大流最小割 208
訓練1 最小邊割集 210
訓練2 最小點割集 211
訓練3 最大收益 213
6.6 最小費用最大流 214
訓練1 農場之旅 218
訓練2 航空路線 219
第7章 動態規劃進階 222
7.1 背包問題進階 222
7.1.1 多重背包問題 222
訓練 硬幣 224
7.1.2 分組背包問題 227
訓練 價值最大化 228
7.1.3 混合背包問題 229
訓練 最少硬幣 230
7.2 樹形DP進階 232
7.2.1 背包類樹形DP 232
訓練1 城堡中的寶物 232
訓練2 蘋果樹 235
7.2.2 不定根樹形DP 238
訓練1 最大累積度 239
訓練2 最遠距離 243
第8章 複雜動態規劃及其優化 247
8.1 數字DP 247
訓練1 不吉利的數字 247
訓練2 定時炸彈 253
8.2 插頭DP 255
訓練1 鋪磚 256
訓練2 多回路連通性問題 262
8.3 斜率優化 266
訓練1 打印文章 266
訓練2 批處理作業 270
8.4 四邊不等式優化 275
訓練 劃分 277
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。










