ACMICPC算法训练教程.PDF

ACMICPC算法训练教程.PDF

ACM/ICPC 算法训练教程 南京理工大学ACM/ICPC 集训队整理编辑 2010 年10 月 序 ACM 国际大学生程序设计竞赛(ACM/ICPC)是由国际计算机界历史悠久、颇具权威性 的组织ACM 学会主办,是世界上公认的规模最大、水平最高的国际大学生程序设计竞赛, 其目的旨在使大学生运用计算机来充分展示自已分析问题和解决问题的能力。因历届竞赛都 荟萃了世界各大洲的精英,云集了计算机界的“希望之星”,而受到国际各知名大学的重视, 并受到全世界各著名计算机公司的高度关注,成为世界各国大学生最具影响力的国际级计算 机类的赛事。 南京理工大学参与该项赛事八年,获得亚洲区银奖5 个,铜奖12 个。同时在训练中也 积累了一些训练的资料。南京理工大学ACM/ICPC 集训队根据多年训练积累,整理的 《ACM/ICPC 算法训练教程》适合ACM/ICPC 初学者,及具有一定基础的计算机算法和编 程爱好者。适合作为本科及研究生算法与数据结构类课程的参考教材。 本书资料全部来自南京理工大学ACM/ICPC 集训队内部资料。由张珂、张俊华等集训 队员负责整理。因成书仓促,错误在所难免,望批评指正。 余立功 2 目录 第一章 算法基础 1 1.1 穷举(枚举)法1 1.2 递归法 3 1.3 分治法 7 1.4 贪心法 11 1.5 模拟法 16 第二章:数据结构 19 2.1 引言 19 2.2 基本数据结构19 2.3 查找与排序22 2.4 并查集 28 2.5 堆(优先队列)31 2.6 Hash 表34 2.7 线段树 39 第三章 数论 47 3.1 和素数有关的问题47 3.1.1 素数基础47 3.1.2 素数问题举例48 3.2 最大公约数 欧几里得及扩展欧几里得算法 51 3.2.1 欧几里得与扩展欧几里得简介 51 3.2.2 欧几里得与扩展欧几里得举例 52 3.3 整数因子分解54 3.3.1 整数因子分解简介54 3.3.2 整数因子分解举例55 第四章 计算几何 60 4.1 计算几何的基础——矢量61 4.1.1 矢量基础61 4.2 确定任意一对线段是否相交70 4.3 寻找凸包 73 4.3.1 寻找凸包73 4.3.2 凸包举例78 4.4 寻找最近点对81 4.4.1 寻找最近点对方案81 第五章 图算法 86 5.1 引言 86 5.2 最小生成树86 5.2.1 Prim 算法 86 5.2.2 Kruskal 算法 90 5.3 最短路算法90 5.3.1 Dijkstra 算法 90 5.3.2 Bellman-Ford 算法 94 3 5.3.3 Floyd-Warshall 算法 95 5.4 无向图的连通性98 5.4.1 无向连通图割点和桥98

文档评论(0)

1亿VIP精品文档

相关文档