本书是算法竞赛经典教程,由IOI三届金牌获得者倾力打造,系统讲解算法竞赛中的77个核心技巧和解题思路,旨在帮助读者提升算法设计能力与逻辑思维。
本书共分10章,内容包括算法与时间复杂度、前缀和、二分查找、动态规划、数学问题、思维技巧、启发式、数据结构和查询处理、图算法、综合问题。书后配有20道精选的综合测试题,可帮助读者检验和巩固所学知识。300余幅全彩插图,将抽象概念转化为视觉化表达,即使零基础读者也能轻松领悟精髓;153道例题与应用问题均为原创设计,剔除非核心要素,示例代码精简高效,特别适合通过“代码临摹”方式学习的读者。
更多科学出版社服务,请扫码获取。
1991年6月毕业湘潭大学计算机科学系软件专业,获工学学士学位;2005年毕业于中南大学信息工程学院,获软件工程硕士学位。1991年任雅礼中学信息学奥赛总教练,2016年任雅礼天心书院中学校长,2020年任深圳北理莫斯科大学附属中学校长。计算机科学与技术主编《CCF中学生计算机程序设计基础篇》等著作10本,发表论文30多篇,主持编写了《全国中学生计算机程序设计评级标准》和《全国信息学奥赛考试大纲》。兼任长沙市信息技术工作室首席名师,长沙市农村(望城二中)名师工作站站长,湖南省骨干教师培训专家,湖南省特级教师协会常务理事,全国信息学奥赛教师发展委员会主席等。
目录
算法竞赛入门
序 章
序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 挑战问题 30
总结 37
前缀和
第2章
2.1 一维前缀和(1) 42
2.2 一维前缀和(2) 46
2.3 二维前缀和(1) 50
2.4 二维前缀和(2) 56
2.5 挑战问题 61
总结 68
二分查找
第3章
3.1 数组的二分查找 72
3.2 根据答案进行二分查找 77
3.3 双指针法 81
3.4 折半枚举 85
3.5 挑战问题 90
总结 93
第4章 动态规划
4.1 动态规划的基础 98
4.2 动态规划的回溯 101
4.3 二维DP(1):部分和问题 105
4.4 二维DP(2):背包问题 109
4.5 二维DP(3):最长公共子序列问题 114
4.6 二维DP(4):区间DP 119
4.7 优化技巧 123
4.8 状态压缩DP 128
4.9 最长递增子序列问题 133
4.10 挑战问题 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 挑战问题 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章 启发式
7.1 贪心算法 231
7.2 局部搜索算法 235
7.3 模拟退火算法 240
7.4 集束搜索 243
7.5 挑战问题 251
总结 265
第8章 数据结构和查询处理
8.1 栈 270
8.2 队 列 274
8.3 优先队列 278
8.4 关联数组 282
8.5 集合管理(仅限C++) 286
8.6 哈希字符串 290
8.7 倍增法 295
8.8 线段树:RMQ 299
8.9 线段树:RSQ 308
8.10 挑战问题 312
总结 317
第9章 图算法
9.1 图的实现方法 326
9.2 深度优先搜索 329
9.3 广度优先搜索 333
9.4 Dijkstra算法 338
9.5 树的动态规划 346
9.6 Union-Find树 350
9.7 最小生成树问题 358
9.8 最大流问题 362
9.9 二分图匹配问题 372
9.10 挑战问题 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问”挑战指南 429
终5 从挫折到金牌的成长之路 430
参考文献 433