浙江大学ACM竞赛代码库:几何、组合、图论算法大全

需积分: 3 3 下载量 24 浏览量 更新于2024-07-26 收藏 444KB DOC 举报
"浙江大学ACM模板是一个集合了经典代码的资源库,主要针对ACM(国际大学生程序设计竞赛)的学习和参考。这个模板由WishingBone于2002年创建,并在2004年由Riveria进行了最后更新。它包含了一系列与算法和数据结构相关的模块,覆盖了从几何到数论,再到图论等多个领域,是ACMer提高编程技能和解决竞赛问题的重要参考资料。" 以下是浙江大学ACM模板中的主要知识点详解: 1. 几何: - 包含几何公式、多边形处理、多边形切割、浮点函数、面积计算、球面几何、三角形处理、三维几何、凸包计算、网格处理、圆的算法以及整数函数。 2. 组合: - 提供了组合公式、排列组合生成、Gray码生成、Polya计数(置换)算法、字典序全排列和组合计算。 3. 结构: - 实现了并查集、堆、线段树(用于区间查询和修改)、子段和与子阵和的高效算法。 4. 数论: - 阶乘最后非0位的计算、模线性方程组求解、素数检测、欧拉函数的实现。 5. 数值计算: - 定积分的Romberg方法、多项式求根的牛顿法、周期性方程的追赶法求解。 6. 图论—NP搜索: - 最大团问题的算法,包括n小于64时的优化版本。 7. 图论—连通性: - 无向图的关键点和关键边、无向图的块、无向图和有向图的连通分支、有向图的强连通分支、有向图的最小点基。 8. 图论—匹配: - 二分图的最大匹配算法(Kuhn-Munkres和匈牙利算法)、一般图的匹配算法。 9. 图论—网络流: - 包括最大流算法、上下界最大流、最小流、无流量最大流以及最小费用最大流。 10. 图论—应用: - 欧拉回路的查找、树的前序表转化、树的优化算法、拓扑排序、最佳边割集和最佳点割集的计算。 这些内容不仅涵盖了ACM竞赛中常见的基础算法,还涉及了许多高级主题,对于参赛者来说,这是一个宝贵的自学和实践资源。通过深入理解和掌握这些算法,可以有效提升解决复杂编程问题的能力。
2010-04-26 上传
1、 几何 25 1.1 注意 25 1.2 几何公式 25 1.3 多边形 27 1.4 多边形切割 30 1.5 浮点函数 31 1.6 面积 36 1.7 球面 37 1.8 三角形 38 1.9 三维几何 40 1.10 凸包 47 1.11 网格 49 1.12 圆 49 1.13 整数函数 51 2、 组合 54 2.1 组合公式 54 2.2 排列组合生成 54 2.3 生成gray码 56 2.4 置换(polya) 56 2.5 字典序全排列 57 2.6 字典序组合 573、 结构 58 3.1 并查集 58 3.2 堆 59 3.3 线段树 60 3.4 子段和 65 3.5 子阵和 654、 数论 66 4.1 阶乘最后非0位 66 4.2 模线性方程组 67 4.3 素数 68 4.4 欧拉函数 695、 数值计算 70 5.1 定积分计算(Romberg) 70 5.2 多项式求根(牛顿法) 72 5.3 周期性方程(追赶法) 736、 图论—NP搜索 74 6.1 最大团 74 6.2 最大团(n<64)(faster) 757、 图论—连通性 77 7.1 无向图关键点(dfs邻接阵) 77 7.2 无向图关键边(dfs邻接阵) 78 7.3 无向图的块(bfs邻接阵) 79 7.4 无向图连通分支(dfs/bfs邻接阵) 80 7.5 有向图强连通分支(dfs/bfs邻接阵) 81 7.6 有向图最小点基(邻接阵) 828、 图论—匹配 83 8.1 二分图最大匹配(hungary邻接表) 83 8.2 二分图最大匹配(hungary邻接阵) 84 8.3 二分图最大匹配(hungary正向表) 84 8.4二分图最佳匹配(kuhn_munkras邻接阵) 85 8.5 一般图匹配(邻接表) 86 8.6 一般图匹配(邻接阵) 87 8.7 一般图匹配(正向表) 879、 图论—网络流 88 9.1 最大流(邻接阵) 88 9.2 上下界最大流(邻接阵) 89 9.3 上下界最小流(邻接阵) 90 9.4 最大流无流量(邻接阵) 91 9.5 最小费用最大流(邻接阵) 91 10、 图论—应用 92 10.1 欧拉回路(邻接阵) 92 10.2 树的前序表转化 93 10.3 树的优化算法 94 10.4 拓扑排序(邻接阵) 95 10.5 最佳边割集 96 10.6 最佳点割集 97 10.7 最小边割集 98 10.8 最小点割集 99 10.9 最小路径覆盖 101 11、 图论—支撑树 101 11.1 最小生成树(kruskal邻接表) 101 11.2 最小生成树(kruskal正向表) 103 11.3 最小生成树(prim+binary_heap邻接表) 104 11.4 最小生成树(prim+binary_heap正向表) 105 11.5 最小生成树(prim+mapped_heap邻接表) 106 11.6 最小生成树(prim+mapped_heap正向表) 108 11.7 最小生成树(prim邻接阵) 109 11.8 最小树形图(邻接阵) 109 12、 图论—最短路径 111 12.1 最短路径(单源bellman_ford邻接阵) 111 12.2 最短路径(单源dijkstra+bfs邻接表) 111 12.3 最短路径(单源dijkstra+bfs正向表) 112 12.4 最短路径(单源dijkstra+binary_heap邻接表) 113 12.5 最短路径(单源dijkstra+binary_heap正向表) 114 12.6 最短路径(单源dijkstra+mapped_heap邻接表) 115 12.7 最短路径(单源dijkstra+mapped_heap正向表) 116 12.8 最短路径(单源dijkstra邻接阵) 117 12.9 最短路径(多源floyd_warshall邻接阵) 118 13、 应用 118 13.1 Joseph问题 118 13.2 N皇后构造解 119 13.3 布尔母函数 120 13.4 第k元素 120 13.5 幻方构造 121 13.6 模式匹配(kmp) 122 13.7 逆序对数 123 13.8 字符串最小表示 123 13.9 最长公共单调子序列 124 13.10 最长子序列 125 13.11 最大子串匹配 126 13.12 最大子段和 127 13.13 最大子阵和 127 14、 其它 128 14.1 大数(只能处理正数) 128 14.2 分数 134 14.3 矩阵 136 14.4 线性方程组 138 14.5 线性相关 140 14.6 日期 140