《ACM国际大学生程序设计竞赛:算法与实现》内容简介:ACM国际大学生程序设计竞赛(ACM-ICPC)是国际上公认的水平最高、规模最大、影响最深的计算机专业竞赛,目前全球参与人数达20多万。《ACM国际大学生程序设计竞赛:算法与实现》作者将16年的教练经验与积累撰写成本系列丛书,全面、深入而系统地将ACM-ICPC展现给读者。本系列丛书包括《ACM国际大学生程序设计竞赛:知识与入门》、《ACM国际大学生程序设计竞赛:算法与实现》、《ACM国际大学生程序设计竞赛:题目与解读》、《ACM国际大学生程序设计竞赛:比赛与思考》等4册,其中《ACM国际大学生程序设计竞赛:知识与入门》介绍了ACM-ICPC的知识及其分类、进阶与角色、在线评测系统;《ACM国际大学生程序设计竞赛:算法与实现》介绍了ACM-ICPC算法分类、实现及索引;《ACM国际大学生程序设计竞赛:题目与解读》为各类算法配备经典例题及题库,并提供解题思路;《ACM国际大学生程序设计竞赛:比赛与思考》介绍了上海交通大学ACM-ICPC的训练及比赛,包括训练札记、赛场风云、赛季纵横、冠军之路、峥嵘岁月。 本丛书适用于参加ACM国际大学生程序设计竞赛的本科生和研究生,对参加青少年信息学奥林匹克竞赛的中 学生也很有指导价值。同时,作为程序设计、数据结构、算法等相关课程的拓展与提升,本丛书也是难得的教学辅助读物。 目录 第一部分 算 法 第1章 数学 3 1.1 矩阵 3 1.1.1 矩阵类 3 1.1.2 Gauss消元 4 1.1.3 矩阵的逆 6 1.1.4 常系数线性齐次递推 7 1.2 整除与剩余 9 1.2.1 欧几里得算法 9 1.2.2 扩展欧几里得 9 1.2.3 单变元模线性方程 10 1.2.4 中国剩余定理 11 1.2.5 求原根 13 1.2.6 平方剩余 14 1.2.7 离散对数 15 1.2.8 N次剩余 16 1.3 素数与函数 18 1.3.1 素数筛法 18 1.3.2 素数判定 19 1.3.3 质因数分解 20 1.3.4 欧拉函数计算 21 1.3.5 Mobius函数计算 23 1.4 数值计算 24 1.4.1 数值积分 24 1.4.2 高阶代数方程求根 26 1.5 其他 27 1.5.1 快速幂 27 1.5.2 进制转换 28 1.5.3 格雷码 29 1.5.4 高精度整数 30 1.5.5 快速傅立叶变换 35 1.5.6 分数类 37 1.5.7 全排列散列 38 第2章 图论 40 2.1 图的遍历及连通性 40 2.1.1 前向星 40 2.1.2 割点和桥 42 2.1.3 双连通分量 43 2.1.4 极大强连通分量Tarjan 算法 45 2.1.5 拓扑排序 47 2.1.6 2SAT 49 2.2 路径 51 2.2.1 Dijkstra 51 2.2.2 SPFA 53 2.2.3 Floyd-Warshall 54 2.2.4 无环图最短路 55 2.2.5 第k短路 56 2.2.6 欧拉回路 59 2.2.7 混合图欧拉回路 61 2.3 匹配 64 2.3.1 匈牙利算法 64 2.3.2 Hopcroft-Karp算法 66 2.3.3 KM算法 68 2.3.4 一般图最大匹配 71 2.4 树 74 2.4.1 LCA 74 2.4.2 最小生成树Prim算法 77 2.4.3 最小生成树Kruskal算法 78 2.4.4 单度限制最小生成树 79 2.4.5 最小树形图 83 2.4.6 最优比例生成树 85 2.4.7 树的直径 87 2.5 网络流 89 2.5.1 最大流Dinic算法 89 2.5.2 最小割 92 2.5.3 无向图最小割 93 2.5.4 有上下界的网络流 95 2.5.5 费用流 97 2.6 其他 100 2.6.1 完美消除序列 100 2.6.2 弦图判定 101 2.6.3 最大团搜索算法 103 2.6.4 极大团的计数 105 2.6.5 图的同构 107 2.6.6 树的同构 108 第3章 计算几何 112 3.1 多边形 112 3.1.1 计算几何误差修正 112 3.1.2 计算几何点类 113 3.1.3 计算几何线段类 115 3.1.4 多边形类 117 3.1.5 多边形的重心 118 3.1.6 多边形内格点数 119 3.1.7 凸多边形类 120 3.1.8 凸多边形的直径 123 3.1.9 半平面切割多边形 124 3.1.10 半平面交 126 3.1.11 凸多边形交 128 3.1.12 多边形的核 129 3.1.13 凸多边形与直线集交 130 3.2 圆 133 3.2.1 圆与线求交 133 3.2.2 圆与多边形交的面积 134 3.2.3 最小圆覆盖 137 3.2.4 圆与圆求交 138 3.2.5 圆的离散化 140 3.2.6 圆的面积并 144 3.3 三维计算几何 147 3.3.1 三维点类 147 3.3.2 三维直线类 150 3.3.3 三维平面类 152 3.3.4 三维向量旋转 154 3.3.5 长方体表面两点 最短距离 155 3.3.6 四面体体积 156 3.3.7 最小球覆盖 158 3.3.8 三维凸包 161 3.4 其他 164 3.4.1 三角形的四心 164 3.4.2 最近点对 166 3.4.3 平面最小曼哈顿距离 生成树 167 3.4.4 最大空凸包 171 3.4.5 平面划分 174 第4章 数据结构 179 4.1 二叉堆 179 4.2 并查集 183 4.3 树状数组 184 4.4 左偏树 186 4.5 Trie 188 4.6 Treap 190 4.7 伸展树 193 4.8 RMQ线段树 199 4.9 ST表 201 4.10 动态树 202 4.11 块状链表 207 4.12 树链剖分 210 第5章 论题选编 213 5.1 字符串 213 5.1.1 KMP 213 5.1.2 扩展KMP 214 5.1.3 串的最小表示 216 5.1.4 有限状态自动机 217 5.1.5 后缀数组 221 5.1.6 最长重复子串 223 5.1.7 最长公共子串 225 5.1.8 最长回文子串manacher 算法 227 5.1.9 字符串散列 228 5.2 转换 229 5.2.1 星期计算 229 5.2.2 日期相隔天数计算 230 5.2.3 斐波那契进制转换 232 5.2.4 罗马进制转换 233 5.3 构造 235 5.3.1 幻方构造 235 5.3.2 N皇后问题 237 5.3.3 旋转魔方 239 5.3.4 骑士周游问题 242 5.4 计算 245 5.4.1 表达式计算 245 5.4.2 最大权子矩形 247 5.4.3 矩形面积并 249 5.4.4 矩形并的周长 252 5.5 序列 255 5.5.1 第k小数 255 5.5.2 逆序对 256 5.5.3 最长公共子序列 257 5.5.4 最长公共上升子序列 259 第二部分 贴 士 第6章 代数 263 6.1 Bertrand猜想 263 6.2 差分序列 263 6.3 威尔逊定理 263 6.4 约数个数 263 6.5 行列式的值 264 6.6 最小二乘法 264 第7章 解析几何 265 7.1 四边形 265 7.2 抛物线 265 7.3 双曲线 265 7.4 椭圆 266 第8章 平面立体几何 267 8.1 费马点 267 8.2 皮克定理 267 8.3 三角公式 267 8.4 三维几何体 268 8.5 托勒密定理 268 第9章 组合数学 269 9.1 Catalan数 269 9.2 组合公式 269 第10章 图论 271 10.1 树的计数 271 10.2 有特殊条件的汉米尔顿回路 271 10.3 普吕弗序列 272 10.4 模2意义下的二分图匹配数 272 第11章 积分表 273