新書推薦:

《
你想活出怎样的人生:摆渡船上的人生哲学
》
售價:HK$
65.9

《
中国历代户口、田地、田赋统计——梁方仲著作集
》
售價:HK$
148.5

《
反乌合之众——跳出羊群,逆向获利
》
售價:HK$
76.8

《
帝国作为装饰品:英国人眼中的大英帝国(帝国与国际法译丛)
》
售價:HK$
86.9

《
AI芯片应用开发实践:深度学习算法与芯片设计
》
售價:HK$
75.9

《
世界之中(文明三部曲之后,亚洲图书奖得主张笑宇充满想象力的重磅新作)
》
售價:HK$
86.9

《
柏拉图《美诺》疏证
》
售價:HK$
96.8

《
山西明清寺观壁画的内蕴与社会潜流研究
》
售價:HK$
140.8
|
編輯推薦: |
这是一本能让算法变有趣的进阶指南!书中用大量精美插图和竞赛例子,带你轻松掌握数据结构和算法的核心技巧。从解决“超级马里奥”关卡到分析“DNA序列匹配”,每章都像解锁游戏关卡一样,把复杂树结构、动态规划、字符串匹配等知识拆解成简单易懂的步骤,特别适合想提升实战能力的读者。
全书包含56个训练项目,边学边练:比如用“病毒侵袭”案例理解自动匹配文本的诀窍,通过“最近的取款机”问题快速查找地图上的目标。书中还贴心标注了不同难度的知识点,无论你是中学生尝试信息学竞赛,还是大学生准备面试刷题,都能找到适合自己的学习路径。
如果你对算法感兴趣却害怕枯燥的理论,这本书就是为你准备的!它像一位耐心的老师,用图画解释原理,用真实题目巩固方法,还会教你如何把知识用在编程比赛和解决实际问题中。并且,本书搭配详细的代码示例和答案解析,助力读者一步步成长为算法小达人。
快翻开这本书,开启你的算法冒险吧!
|
內容簡介: |
本书图文并茂、通俗易懂,详细讲解数据结构和算法进阶知识,并融入大量的竞赛实例和解题技巧,可帮助读者领悟数据结构和算法的精髓,并熟练应用其解决实际问题。
本书总计8章。第1章讲解数据结构进阶知识,涉及分块算法和跳跃表;第2章讲解字符串算法进阶知识,涉及AC自动机和后缀数组;第3章讲解树上操作,涉及树链剖分、点分治和边分治;第4章讲解复杂树,涉及KD树、左偏树、动态树和树套树;第5章讲解可持久化数据结构,涉及可持久化线段树和可持久化字典树;第6章讲解图论算法进阶知识,涉及EK算法、Dinic算法、ISAP算法、二分图匹配、最大流最小割和最小费用最大流;第7章讲解动态规划进阶知识,涉及背包问题进阶知识和树形DP进阶知识;第8章讲解复杂动态规划及其优化,涉及数位DP、插头DP、斜率优化和四边不等式优化。
本书面向对数据结构和算法感兴趣的读者,无论是想扎实内功或参加算法竞赛的学生,还是想进入名企的求职者,抑或是想提升核心竞争力的在职人员,都可以参考本书。若想系统学习数据结构和算法,则可参考《算法训练营:入门篇》(全彩版)和《算法训练营:提高篇》(全彩版)。
|
關於作者: |
陈小玉
高级程序员,主要研究方向为算法优化和机器学习。出版著作有《算法训练营》,所教学生多次获得ACM-ICPC、蓝桥杯等算法竞赛奖项。
|
目錄:
|
第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
|
內容試閱:
|
目前,信息技术已被广泛应用于互联网、金融、航空、军事、医疗等各个领域,未来的应用将更加广泛和深入。并且,很多中小学都开设了计算机语言课程,越来越多的中小学生对编程、算法感兴趣,甚至在NOIP、NOI等算法竞赛中大显身手,进入名校深造。对信息技术感兴趣的大学生通常会参加ACM-ICPC、CCPC、蓝桥杯等算法竞赛,其获奖者更是被各大名企所青睐。
学习算法,不仅可以帮助我们具备较强的思维能力及解决问题的能力,还可以帮助我们快速学习各种新技术,拥有超强的学习能力。
写作背景
很多读者都觉得算法太难,市面上晦涩难懂的各种教材更是“吓退”了一大批读者。实际上,算法并没有我们想象中那么难,反而相当有趣。
每当有学生说看不懂某个算法的时候,笔者就会建议其画图。画图是学习算法最好的方法,因为它可以把抽象难懂的算法展现得生动形象、简单易懂。笔者曾出版《算法训练营:海量图解 竞赛刷题》(入门篇)和《算法训练营:海量图解 竞赛刷题》(进阶篇),很多读者非常喜欢其中的海量图解,更希望看到这两本书的全彩版。经过一年的筹备,笔者对上述书中的所有图片都重新进行了绘制和配色,并精选、修改、补充和拆分上述书中的内容,形成了《算法训练营:入门篇》(全彩版)、《算法训练营:提高篇》(全彩版)和《算法训练营:进阶篇》(全彩版),本书就是其中的《算法训练营:进阶篇》(全彩版)。在此衷心感谢各位读者的大力支持!
本书详细讲解数据结构和算法进阶知识,还增加了可持久化数据结构方面的内容。本书不是知识点的堆砌,也不是粘贴代码而来的简单题解,而是将知识点讲解和对应的竞赛实例融会贯通,读者可以在轻松阅读本书的同时进行刷题实战,在实战中体会算法的妙处,感受算法之美。
学习建议
学习算法的过程,应该是通过大量实例充分体会遇到问题时该如何分析:用什么数据结构,用什么算法和策略,算法复杂度如何,是否有优化的可能,等等。这里有以下几个建议。
第1个建议:学经典,多理解。
算法书有很多,初学者最好选择图解较多的入门书,当然,也可以选择多本书,从多个角度进行对比和学习。先看书中的图解,理解各种经典问题的求解方法,如果还不理解,则可以看视频讲解,理解之后再看代码,尝试自己动手上机运行。如有必要,则可以将算法的求解过程通过图解方式展示出来,以加深对算法的理解。
第2个建议:看题解,多总结。
在掌握书中的经典算法之后,可以在刷题网站上进行专项练习,比如练习贪心算法、分治算法、动态规划等方面的题目。算法比数据结构更加灵活,对同一道题目可以用不同的算法解决,算法复杂度也不同。如果想不到答案,则可以看题解,比较自己的想法与题解的差距。要多总结题目类型及最优解法,找相似的题目并自己动手解决问题。
第3个建议:举一反三,灵活运用。
通过专项刷题做到“见多识广”,总结常用的算法模板,熟练应用套路,举一反三,灵活运用,逐步提升刷题速度,力争“bug free”(无缺陷)。
本书特色
本书具有以下特色。
(1)完美图解,通俗易懂。本书对每个算法的基本操作都有全彩图解。通过图解,许多问题都变得简单,可迎刃而解。
(2)实例丰富,简单有趣。本书结合了大量竞赛实例,讲解如何用算法解决实际问题,使复杂难懂的问题变得简单有趣,可帮助读者轻松掌握算法知识,体会其中的妙处。
(3)深入浅出,透析本质。本书透过问题看本质,重点讲解如何分析和解决问题。本书采用了简洁易懂的代码,对数据结构的设计和算法的描述全面、细致,而且有算法复杂度分析及优化过程。
(4)实战演练,循序渐进。本书在讲解每个算法后都进行了实战演练,使读者在实战中体会算法的设计思路和使用技巧,从而提高独立思考、动手实践的能力。书中有丰富的练习题和竞赛题,可帮助读者及时检验对所学知识的掌握情况,为从小问题出发且逐步解决大型复杂性工程问题奠定基础。
(5)网络资源,技术支持。本书为读者提供了配套源码、课件、视频,并提供了博客、微信群、QQ群等技术支持途径,可随时为读者答疑解惑。
建议和反馈
写书是极其琐碎、繁重的工作,尽管笔者已经竭力使本书内容、网络资源和技术支持接近完美,但仍然可能存在很多漏洞和瑕疵。欢迎读者反馈关于本书的意见,因为这有利于我们改进和提高,以帮助更多的读者。如果对本书有意见和建议,或者有问题需要帮助,则都可以加入QQ群281607840,也可以致信rainchxy@126.com与笔者交流,笔者将不胜感激。
对于本书提供的读者资源,可参照本书封底的“读者服务”信息获取。
致谢
感谢笔者的家人和朋友在本书写作过程中提供的大力支持。感谢电子工业出版社工作严谨、高效的张国霞编辑,她的认真、负责促成了本书的早日出版。感谢中国计算机学会常务理事李轩涯老师的帮助。感谢码蹄集平台的大力支持。感谢提供了宝贵意见的同事们。感谢提供了技术支持的同学们。感恩遇到这么多良师益友!
|
|