上海交大ACM算法模板集合

需积分: 14 25 下载量 161 浏览量 更新于2024-07-19 收藏 794KB DOC 举报
"上海交大ACM算法模板包含了大量的编程竞赛中常见的算法和数据结构,旨在帮助参赛者快速解决各种问题。" 上海交通大学的ACM算法模板是一个综合性的编程资源,它涵盖了广泛的算法和数学公式,特别适用于参加ACM/ICPC(国际大学生程序设计竞赛)或其他算法竞赛的选手。这个模板提供了各种常见问题的解决方案,包括但不限于数论、图论、几何以及一些特定专题的讨论。 在数论算法部分,模板中包括了最大公约数(GCD)的计算、素数判断、素数筛法(Sieve of Eratosthenes)、模逆元、扩展欧几里得算法、模线性方程的求解、中国余数定理、欧拉函数、Farey序列以及素数测试和因式分解方法。这些是处理整数性质和数论问题的基础。 在图论算法部分,模板涉及了最小生成树(Kruskal和Prim算法)、单源最短路径(Bellman-Ford、Dijkstra和Floyd算法)、全源最短路径、拓扑排序、网络流问题(预流、最大流、最小费用最大流)以及图的匹配算法(如匈牙利算法、KM算法)。这些都是解决复杂网络问题的关键工具。 几何算法部分包含了基本的几何操作,如计算球面上两点之间的最短距离、求解三维空间中三点构成的圆心坐标,以及三角形的重要性质。这对于处理平面几何和三维几何问题非常有帮助。 此外,模板还探讨了一些专题,如树状数组用于高效动态更新和查询、字典树和后缀树用于字符串操作、线段树处理区间查询和更新、并查集处理集合操作、二叉堆优化优先队列、逆序数计算在归并排序中的应用、树状动态规划、欧拉路的寻找、八数码难题、高斯消元法解决线性方程组,以及字符串匹配算法(如KMP)等。这些专题覆盖了数据结构和算法设计的多个方面。 总而言之,上海交大的ACM模板是一个全面且实用的工具,不仅适用于参赛者,也是学习算法和数据结构的宝贵参考资料。通过理解和掌握其中的算法,开发者能够提升解决复杂计算问题的能力。
2011-12-14 上传
1 图论 3 1.1 术语 3 1.2 独立集、覆盖集、支配集之间关系 3 1.3 DFS 4 1.3.1 割顶 6 1.3.2 桥 7 1.3.3 强连通分量 7 1.4 最小点基 7 1.5 拓扑排序 7 1.6 欧拉路 8 1.7 哈密顿路(正确?) 9 1.8 Bellman-ford 9 1.9 差分约束系统(用bellman-ford解) 10 1.10 dag最短路径 10 1.11 二分图匹配 11 1.11.1 匈牙利算法 11 1.11.2 KM算法 12 1.12 网络流 15 1.12.1 最大流 15 1.12.2 上下界的网络的最大流 17 1.12.3 上下界的网络的最小流 17 1.12.4 最小费用最大流 18 1.12.5 上下界的网络的最小费用最小流 21 2 数论 21 2.1 最大公约数gcd 21 2.2 最小公倍数lcm 22 2.3 快速幂取模B^LmodP(O(logb)) 22 2.4 Fermat小定理 22 2.5 Rabin-Miller伪素数测试 22 2.6 Pollard-rho 22 2.7 扩展欧几里德算法extended-gcd 24 2.8 欧拉定理 24 2.9 线性同余方程ax≡b(mod n) 24 2.10 中国剩余定理 25 2.11 Discrete Logging(BL == N (mod P)) 26 2.12 N!最后一个不为0的数字 27 2.13 2^14以内的素数 27 3 数据结构 31 3.1 堆(最小堆) 31 3.1.1 删除最小值元素: 31 3.1.2 插入元素和向上调整: 32 3.1.3 堆的建立 32 3.2 并查集 32 3.3 树状数组 33 3.3.1 LOWBIT 33 3.3.2 修改a[p] 33 3.3.3 前缀和A[1]+…+A[p] 34 3.3.4 一个二维树状数组的程序 34 3.4 线段树 35 3.5 字符串 38 3.5.1 字符串哈希 38 3.5.2 KMP算法 40 4 计算几何 41 4.1 直线交点 41 4.2 判断线段相交 41 4.3 三点外接圆圆心 42 4.4 判断点在多边形内 43 4.5 两圆交面积 43 4.6 最小包围圆 44 4.7 经纬度坐标 46 4.8 凸包 46 5 Problem 48 5.1 RMQ-LCA 48 5.1.1 Range Minimum Query(RMQ) 49 5.1.2 Lowest Common Ancestor (LCA) 53 5.1.3 Reduction from LCA to RMQ 56 5.1.4 From RMQ to LCA 57 5.1.5 An<O(N), O(1)> algorithm for the restricted RMQ 60 5.1.6 An AC programme 61 5.2 最长公共子序列LCS 64 5.3 最长上升子序列/最长不下降子序列(LIS) 65 5.3.1 O(n^2) 65 5.3.2 O(nlogn) 66 5.4 Joseph问题 67 5.5 0/1背包问题 68 6 组合数学相关 69 6.1 The Number of the Same BST 69 6.2 排列生成 71 6.3 逆序 72 6.3.1 归并排序求逆序 72 7 数值分析 72 7.1 二分法 72 7.2 迭代法(x=f(x)) 73 7.3 牛顿迭代 74 7.4 数值积分 74 7.5 高斯消元 75 8 其它 77