目录
第1章 引言 1
1.1 什么是算法竞赛? 2
1.2 关于本书 4
1.3 CSES题目集 5
1.4 其他资源 7
参考文献 8
第2章 编程技巧 9
2.1 语言特性 10
2.2 递归算法 16
2.3 位运算 19
参考文献 25
第3章 算法效率 27
3.1 时间复杂度 28
3.2 算法设计示例 33
3.3 代码优化 37
第4章 排序与搜索 43
4.1 排序算法 44
4.2 通过排序解决问题 49
4.3 二分查找 53
第5章 数据结构 57
5.1 动态数组 58
5.2 集合结构 61
5.3 实验 66
第6章 动态规划 69
6.1 基本概念 70
6.2 更多示例 75
参考文献 82
第7章 图论算法 83
7.1 图论基础知识 84
7.2 图遍历 88
7.3 *短路 92
7.4 有向无环图 98
7.5 后继图 102
7.6 *小生成树 104
参考文献 110
第8章 算法设计专题 111
8.1 位并行算法 112
8.2 均摊分析(amortized analysis) 115
8.3 查找*小值 119
参考文献 121
第9章 区间查询 123
9.1 静态数组上的查询 124
9.2 树结构 126
参考文献 132
第10章 树上算法 133
10.1 基本技术 134
10.2 树上查询 139
10.3 高级技术 145
参考文献 146
第11章 数学专题 147
11.1 数论 148
11.2 组合数学 157
11.3 矩阵 165
11.4 概率 174
11.5 博弈论 181
11.6 傅里叶变换 187
11.7 猜测公式 192
参考文献 196
第12章 高级图算法 197
12.1 强连通性 198
12.2 完整路径 201
12.3 *大流 205
12.4 深度优先搜索树 214
12.5 *小费用流 216
参考文献 221
第13章 计算几何 223
13.1 几何技术 224
13.2 扫描线算法 231
参考文献 234
第14章 字符串算法 235
14.1 基本约定 236
14.2 字符串哈希 239
14.3 Z 算法 242
14.4 后缀数组 245
14.5 字符串自动机 248
参考文献 254
第15章 附加主题 255
15.1 根号分治技术 256
15.2 线段树再探 262
15.3 Treaps 269
15.4 动态规划优化 272
15.5 回溯技术 276
15.6 杂项 280
参考文献 285
第16章 Python在算法竞赛中的应用 287
16.1 引言 288
16.2 数据结构 292
16.3 没有二叉搜索树的情况下的对策 297
16.4 递归函数 299
16.5 运行效率 302
16.6 将Python作为工具使用 304
第17章 如何准备IOI 309
17.1 竞赛概述 310
17.2 赛前准备 314
17.3 技术技能 316
17.4 竞赛期间 321
参考文献 324
第18章 算法竞赛的未来 325
18.1 生成式AI 326
18.2 接下来会发生什么 328
参考文献 328
附录 数学背景知识 329