《算法竞赛入门经典 训练指南 升级版》刘汝佳 | PDF下载|ePub下载
内容简介 · · · · · ·
《算法竞赛入门经典——训练指南(升级版)》是《算法竞赛入门经典(第2版)》一书的重要补充,旨在补充原书中没有涉及或者讲解得不够详细的内容,从而构建一个更完整的知识体系。本书通过大量有针对性的题目,让抽象复杂的算法和数学具体化、实用化。
《算法竞赛入门经典——训练指南(升级版)》共包括6章,分别为算法设计基础、数学基础、实用数据结构、几何问题、图论算法与模型以及更多算法专题。全书通过206道例题深入浅出地介绍了上述领域的各个知识点、经典思维方式以及程序实现的常见方法和技巧,并在章末给出了丰富的分类习题,供读者查漏补缺和强化学习效果。
《算法竞赛入门经典——训练指南(升级版)》题目多选自近年来ACM/ICPC区域赛和总决赛真题,内容全面,信息量大,覆盖了常见算法竞赛中的大多数细分知识点。书中还给出了所有重要的经典算法的完整程序,以及重要例题的核心代码,既适合选手自学,也方便院校和培训机构组织学生学习和训练。
作者简介 · · · · · ·
刘汝佳,2000年3月获得NOI2000全国青少年信息学奥林匹克竞赛一等奖。大一时获2001年ACM/ICPC国际大学生程序设计竞赛亚洲-上海赛区冠军和2002年世界总决赛银牌。2004年至今共为 ACM/ICPC亚洲赛区命题二十余道,担任6次裁判和2次命题总监,并应邀参加IOI和ACM/ICPC相关国际研讨会。曾出版《算法竞赛入门经典》《算法竞赛入门经典——训练指南》《编程挑战》等畅销书。
陈锋,任职于厦门宇道信隆信息科技有限公司,担任技术总监职务,专注于人工智能以及算法技术在金融科技领域的应用。同时担任四川大学ACM/ICPC算法竞赛集训队特邀指导老师,榕阳编程NOI、NOIP指导教练。所带学员多次获得ICPC金/银牌,进入NOI省队等。曾出版《算法竞赛入门经典——训练指南》《算法竞赛入门经典——习题与解答》《算法竞赛入门经典——算法实现》等畅销书。
目录 · · · · · ·
1.1 思维的体操 1
1.2 问题求解常见策略 14
1.3 高效算法设计举例 36
1.4 动态规划专题 55
1.5 小结与习题 71
1.5.1 问题求解策略 72
1.5.2 高效算法设计 80
1.5.3 动态规划 83
第2章 数学基础 86
2.1 基本计数方法 86
2.2 递推关系 92
2.3 数论 101
2.3.1 基本概念 102
2.3.2 模方程 107
2.3.3 线性筛 113
2.3.4 积性函数与莫比乌斯反演 116
2.3.5 筛法求解积性函数 118
2.4 组合游戏 124
2.5 概率与数学期望 130
2.6 置换及其应用 135
2.7 矩阵和线性方程组 142
2.8 快速傅里叶变换(FFT) 154
2.9 数值方法 165
2.10 小结与习题 171
2.10.1 组合计数 173
2.10.2 数论 177
2.10.3 组合游戏 181
2.10.4 概率 183
2.10.5 置换 184
2.10.6 矩阵与线性方程组 186
2.10.7 快速傅里叶变换(FFT) 188
2.10.8 数值方法 189
第3章 实用数据结构 192
3.1 基础数据结构回顾 192
3.1.1 抽象数据类型(ADT) 192
3.1.2 优先队列 194
3.1.3 并查集 197
3.2 区间信息的维护与查询 199
3.2.1 二叉索引树(树状数组) 200
3.2.2 RMQ问题 202
3.2.3 线段树(1):点修改 204
3.2.4 线段树(2):区间修改 207
3.3 字符串(1) 219
3.3.1 Trie 219
3.3.2 KMP算法 222
3.3.3 Aho-Corasick自动机 225
3.4 字符串(2) 229
3.4.1 后缀数组 229
3.4.2 最长公共前缀(LCP) 233
3.4.3 基于哈希值的LCP算法 235
3.4.4 回文的Manacher算法 238
3.5 字符串(3) 240
3.5.1 后缀自动机的性质 241
3.5.2 后缀链接树(Suffix Link Tree) 241
3.5.3 后缀自动机的构造算法 242
3.6 排序二叉树 255
3.6.1 基本概念 255
3.6.2 用Treap实现名次树 258
3.6.3 用伸展树实现可分裂与合并的序列 266
3.7 树的经典问题与方法 270
3.8 动态树与LCT 289
3.9 离线算法 299
3.10 kd-Tree 312
3.11 可持久化数据结构 319
3.12 小结与习题 331
3.12.1 基础数据结构 332
3.12.2 区间信息维护 333
3.12.3 字符串算法 335
3.12.4 排序二叉树 338
3.12.5 树的经典问题与方法 339
3.12.6 动态树与LCT 342
3.12.7 离线算法 344
3.12.8 kd-Tree 347
3.12.9 可持久化数据结构 348
第4章 几何问题 351
4.1 二维几何基础 351
4.1.1 基本运算 352
4.1.2 点和直线 353
4.1.3 多边形 355
4.1.4 例题选讲 356
4.1.5 二维几何小结 359
4.2 与圆和球有关的计算问题 360
4.2.1 圆的相关计算 360
4.2.2 球面相关问题 366
4.3 二维几何常用算法 366
4.3.1 点在多边形内的判定 366
4.3.2 凸包 368
4.3.3 半平面交 372
4.3.4 平面区域 378
4.4 三维几何基础 382
4.4.1 三维点积 383
4.4.2 三维叉积 384
4.4.3 三维凸包 386
4.4.4 例题选讲 388
4.4.5 三维几何小结 392
4.5 小结与习题 393
4.5.1 基础题目 393
4.5.2 二维几何计算 395
4.5.3 几何算法 398
4.5.4 三维几何 403
第5章 图论算法与模型 408
5.1 基础题目选讲 408
5.2 深度优先遍历 411
5.2.1 无向图的割顶和桥 413
5.2.2 无向图的双连通分量 416
5.2.3 有向图的强连通分量 420
5.2.4 2-SAT问题 424
5.3 最短路问题 428
5.3.1 再谈Dijkstra算法 428
5.3.2 再谈Bellman-Ford算法 432
5.3.3 例题选讲 436
5.4 生成树相关问题 443
5.5 二分图匹配 447
5.5.1 二分图最大匹配 447
5.5.2 二分图最佳完美匹配 448
5.5.3 稳定婚姻问题 452
5.5.4 常见模型 455
5.6 网络流问题 457
5.6.1 最短增广路算法 457
5.6.2 最小费用最大流算法 462
5.6.3 建模与模型变换 464
5.6.4 例题选讲 467
5.7 小结与习题 472
5.7.1 基础知识和算法 472
5.7.2 DFS及其应用 472
5.7.3 最短路及其应用 476
5.7.4 最小生成树 477
5.7.5 二分图匹配 479
5.7.6 网络流 480
第6章 更多算法专题 484
6.1 轮廓线动态规划 484
6.2 嵌套和分块数据结构 490
6.3 暴力法专题 500
6.3.1 路径寻找问题 500
6.3.2 对抗搜索 505
6.3.3 精确覆盖问题和DLX算法 510
6.4 几何专题 516
6.4.1 仿射变换与矩阵 516
6.4.2 离散化和扫描法 518
6.4.3 运动规划 527
6.5 数学专题 529
6.5.1 小专题集锦 530
6.5.2 线性规划 532
6.6 浅谈代码设计与静态查错 533
6.6.1 简单的Bash 533
6.6.2 《仙剑奇侠传四》之最后的战役 542
6.7 小结与习题 548
6.7.1 轮廓线上的动态规划 548
6.7.2 数据结构综合应用 550
6.7.3 暴力法 557
6.7.4 几何专题 562
6.7.5 数学专题 567
6.7.6 代码组织与调试 569
附录 Java、C#和Python语言简介 575
主要参考书目 582
· · · · · ·
发表回复
要发表评论,您必须先登录。