算法基础:打开程序设计之门
作者:梁冰
出版社:电子工业出版社
出版时间:2019-03-01
ISBN:9787121358685
定价:¥69.00
目 录
第1章 高级数据结构 (1)
1.1 堆 (1)
1.1.1 堆的定义 (1)
1.1.2 建堆 (1)
1.1.3 堆排序算法 (2)
1.2 树状数组 (3)
1.2.1 树状数组的定义 (4)
1.2.2 树状数组的实现和使用 (4)
1.2.3 例题讲解 (5)
1.3 左倾堆 (7)
1.3.1 左倾堆相关定义和性质 (7)
1.3.2 左倾堆的操作 (7)
1.3.3 例题讲解 (8)
1.4 平衡二叉树 (10)
1.4.1 Treap (11)
1.4.2 Splay树 (13)
1.4.3 例题讲解 (18)
1.5 练习题 (22)
第2章 字符串 (24)
2.1 Trie树 (24)
2.1.1 Trie树的原理 (24)
2.1.2 Trie树的实现 (25)
2.1.3 例题讲解 (26)
2.2 KMP算法 (29)
2.2.1 KMP算法的原理 (29)
2.2.2 KMP算法的实现 (31)
2.2.3 例题讲解 (32)
2.3 Aho-Corasick自动机 (35)
2.3.1 Aho-Corasick自动机原理 (35)
2.3.2 Aho-Corasick自动机算法的实现 (37)
2.3.3 例题讲解 (39)
2.4 后缀数组 (43)
2.4.1 后缀数组基本原理 (43)
2.4.2 后缀数组的应用 (46)
2.4.3 例题讲解 (49)
2.5 练习题 (54)
第3章 动态规划进阶算法 (57)
3.1 树状DP (57)
3.1.1 树状DP的定义 (57)
3.1.2 树状DP解题方法 (58)
3.1.3 例题讲解 (58)
3.2 状态压缩DP (62)
3.2.1 集合的整数表示 (62)
3.2.2 例题讲解 (63)
3.3 动态规划的优化方法 (66)
3.3.1 单调队列优化的动态规划 (66)
3.3.2 例题讲解 (66)
3.3.3 斜率优化的动态规划 (68)
3.3.4 例题讲解 (68)
3.3.5 四边形不等式优化的动态规划 (71)
3.3.6 例题讲解 (71)
3.4 练习题 (73)
第4章 图论高级算法 (76)
4.1 最大流 (76)
4.1.1 最大流的定义 (76)
4.1.2 增广路算法涉及的三个重要概念 (77)
4.1.3 Edmonds-Karp算法 (79)
4.1.4 Dinic算法 (82)
4.1.5 ISAP算法 (84)
4.1.6 网络流的建图 (89)
4.1.7 例题讲解 (91)
4.2 最小费用流 (99)
4.2.1 最小费用流算法 (99)
4.2.2 例题讲解 (100)
4.3 二分图匹配 (109)
4.3.1 二分图的定义 (109)
4.3.2 二分图的最大匹配 (109)
4.3.3 二分图的性质与应用 (114)
4.3.4 例题讲解 (115)
4.4 练习题 (118)
第5章 经典算法问题 (121)
5.1 多项式与快速傅里叶变换 (121)
5.1.1 多项式 (121)
5.1.2 多项式的表示与多项式乘法 (121)
5.1.3 DFT和FFT的实现 (123)
5.1.4 例题讲解 (124)
5.2 NP完全性 (127)
5.2.1 NP问题简介 (127)
5.2.2 哈密顿回路 (127)
5.2.3 例题讲解 (128)
5.3 对偶图问题 (135)
5.3.1 基本概念 (135)
5.3.2 平面图转化为对偶图 (137)
5.3.3 对偶图的应用 (140)
5.4 RMQ问题 (144)
5.4.1 RMQ问题的简单求解方法 (145)
5.4.2 ST(Sparse Table)算法 (145)
5.4.3 例题讲解 (146)
5.5 LCA问题 (151)
5.5.1 LCA问题的简单求解方法 (151)
5.5.2 基于倍增的双亲存储法 (152)
5.5.3 高效的LCA算法 (152)
5.5.4 例题讲解 (154)
5.6 练习题 (158)
第6章 组合数学 (161)
6.1 排列组合 (161)
6.1.1 基本计数原则 (161)
6.1.2 排列 (161)
6.1.3 组合 (162)
6.1.4 例题讲解 (163)
6.2 母函数 (164)
6.2.1 母函数基础 (165)
6.2.2 母函数的两类具体应用 (165)
6.2.3 例题讲解 (166)
6.3 整数划分 (169)
6.3.1 从动态规划到母函数 (169)
6.3.2 例题讲解 (170)
6.4 Stirling数和Catalan数 (172)
6.4.1 第一类Stirling数 (172)
6.4.2 第二类Stirling数 (173)
6.4.3 Catalan数 (173)
6.4.4 例题讲解 (174)
6.5 容斥原理与反演 (179)
6.5.1 容斥原理 (179)
6.5.2 反演理论 (180)
6.5.3 Mobius反演 (181)
6.5.4 例题讲解 (184)
6.6 群论与Polya定理 (187)
6.6.1 群的基本性质 (187)
6.6.2 置换群 (188)
6.6.3 Burnside定理及Polya定理 (189)
6.6.4 例题讲解 (190)
6.7 练习题 (192)
第7章 计算几何 (195)
7.1 多边形上的数据结构表示 (195)
7.1.1 点 (195)
7.1.2 线段 (197)
7.1.3 多边形类 (198)
7.1.4 例题讲解 (199)
7.2 多边形相交问题 (202)
7.2.1 线段相交 (202)
7.2.2 多边形相交问题的讨论 (203)
7.2.3 例题讲解 (204)
7.3 多边形求面积 (207)
7.3.1 计算多边形的面积 (207)
7.3.2 格点数 (208)
7.3.3 例题讲解 (209)
7.4 凸包 (210)
7.4.1 凸多边形 (210)
7.4.2 凸多边形的性质 (215)
7.4.3 构造凸包 (215)
7.4.4 例题讲解 (219)
7.5 相交问题 (230)
7.5.1 半平面交 (230)
7.5.2 凸多边形交 (232)
7.5.3 例题讲解 (232)
7.6 圆 (240)
7.6.1 圆与线段的交 (240)
7.6.2 圆与多边形的交的面积 (241)
7.6.3 圆与圆的交的面积 (241)
7.6.4 圆与圆的并的面积 (245)
7.7 练习题 (249)
第8章 组合游戏论 (252)
8.1 组合游戏论中的游戏 (252)
8.1.1 组合游戏论的定义 (252)
8.1.2 博弈树模型 (253)
8.1.3 巴什博弈 (253)
8.1.4 威佐夫博弈 (254)
8.1.5 例题讲解 (255)
8.2 NIM游戏和SG函数 (256)
8.2.1 NIM游戏的定义 (256)
8.2.2 NIM游戏中的性质 (256)
8.2.3 Sprague-Grundy函数的价值 (257)
8.2.4 SG函数的应用 (258)
8.2.5 例题讲解 (259)
8.3 NIM游戏的变形 (262)
8.3.1 ANTI-NIM问题 (262)
8.3.2 Staircase NIM (264)
8.3.3 例题讲解 (265)
8.4 练习题 (267)
参考文献 (269)