浙江大学ACM模板(经典代码)

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 浙江大学ACM模板是一份经典代码库,包含了丰富的算法和数据结构,主要针对计算机科学竞赛(如ACM/ICPC)中的常见问题。这份模板由WishingBone于2002年创建,并在2004年由Riveria更新,是浙江大学ICPC团队的重要资源。 1. **几何** - **注意事项**:在几何计算中,要注意浮点误差的处理,避免因为精度问题导致错误结果。 - **几何公式**:包括点、线、圆等的基本性质和计算公式。 - **多边形**:涉及多边形的定义、性质以及与多边形相关的计算。 - **多边形切割**:如何将一个多边形分割成更小的部分,可能涉及到图形操作和遍历算法。 - **浮点函数**:处理浮点数的函数,如开方、取余等,需要考虑浮点数精度问题。 - **面积**:计算平面图形和立体图形的面积或体积。 - **球面**:处理球面几何问题,如球体截面、球面坐标等。 - **三角形**:三角形的性质、面积计算、内角和外角计算等。 - **三维几何**:扩展到三维空间的几何问题,如点、线、面的关系,体积计算等。 - **凸包**:找到一个几何对象中所有点的最小凸包,可以使用Graham扫描、Jarvis步进等算法。 - **网格**:处理二维或三维网格上的问题,如搜索、移动路径等。 - **圆**:圆的定义、属性以及与圆相关的算法,如碰撞检测、距离计算等。 - **整数函数**:处理整数的特定函数,可能包括取模、质因数分解等。 2. **组合数学** - **组合公式**:组合的计算,包括组合数C(n, k)的计算。 - **排列组合生成**:生成所有可能的排列或组合。 - **Gray码**:生成具有最小相邻差异的二进制码序列。 - **置换(Polya)**:处理图论中的置换问题。 - **字典序全排列**:按照字典序生成所有排列。 - **字典序组合**:按字典序生成所有组合。 3. **数据结构** - **并查集**:用于处理不相交集合的合并和查询。 - **堆**:包括优先队列,常用于实现最大堆和最小堆。 - **线段树**:高效处理区间查询和修改的数据结构。 - **子段和**:快速计算一段连续数组的和。 - **子阵和**:类似线段树,但处理二维矩阵的子区域和。 4. **数论** - **阶乘最后非0位**:确定阶乘末尾的非零数字位置。 - **模线性方程组**:解决同余方程组的问题,如扩展欧几里得算法。 - **素数**:素数判断、素数生成等相关算法,如埃拉托斯特尼筛法。 - **欧拉函数**:计算小于等于给定数的正整数中与之互质的数的数量。 5. **数值计算** - **定积分计算(Romberg)**:用Romberg方法近似求解定积分。 - **多项式求根(牛顿法)**:通过牛顿迭代法求解多项式方程的根。 - **周期性方程(追赶法)**:解决周期性方程,如通过追赶法求解周期解。 6. **图论—NP搜索** - **最大团**:寻找图中最大完全子图,即最大独立集。 - **有向图最小点基**:寻找有向图中最小的点集,使得每个点都能通过边到达其他点。 7. **图论—连通性** - **关键点和关键边**:确定无向图中维持连通性的关键元素。 - **图的块**:划分无向图的连通分支。 - **无向图连通分支**:找出图的所有连通分支。 - **有向图强连通分支**:识别有向图中的强连通分量。 8. **图论—匹配** - **二分图最大匹配**:匈牙利算法在二分图中寻找最大匹配。 - **一般图匹配**:处理非二分图的匹配问题。 9. **图论—网络流** - **最大流**:寻找网络中的最大流,如Ford-Fulkerson算法。 - **上下界最大流**:处理带有容量上下界的最大流问题。 - **最小费用最大流**:在满足最大流的同时最小化总费用。 10. **图论—应用** - **欧拉回路**:判断和构造图的欧拉回路。 - **树的前序表转化**:从树的前序遍历序列恢复原树结构。 - **树的优化算法**:如LCA(最近公共祖先)等。 - **拓扑排序**:对有向无环图进行线性排序。 - **最佳边割集、点割集**:寻找图的最优割集,优化某些目标函数。 - **最小路径覆盖**:找到覆盖所有顶点的最小路径集合。 11. **图论—支撑树** - **最小生成树**:Kruskal、Prim算法求解图的最小生成树。 12. **图论—最短路径** - **单源最短路径**:Bellman-Ford、Dijkstra算法求解单源最短路径。 - **多源最短路径**:Floyd-Warshall算法求解所有对最短路径。 13. **应用** - **Joseph问题**:模拟Josephus问题的解决方案。 - **N皇后构造解**:解决N皇后问题,放置N个皇后在棋盘上,使其互不攻击。 - **布尔母函数**:处理布尔代数中的函数操作。 - **第k元素**:查找序列中第k小或第k大的元素。 - **幻方构造**:构造满足特定条件的幻方。 - **模式匹配(KMP)**:字符串匹配算法,避免不必要的回溯。 - **逆序对**:计算序列中逆序对的数量。 - **字符串最小表示**:找到字符串的最小表示形式,如最小字典序。 - **最长公共单调子序列**:查找两个序列中最长的公共单调子序列。 - **最长子序列**:寻找两个序列间的最长相同子序列。 - **最大子串匹配**:找到两个字符串中的最长相同子串。 - **最大子段和**:计算数组中连续子数组的最大和。 - **最大子阵和**:处理二维数组,找到其中的最大子阵和。 14. **其他** - **大数**:处理大整数的运算,通常用于超过标准整型范围的计算。 - **分数**:分数的表示和运算。 - **矩阵**:矩阵的运算,如加、减、乘、逆等。 - **线性方程组**:解线性方程组的方法,如高斯消元法。 - **线性相关**:判断向量或矩阵的线性相关性。 - **日期**:处理日期的计算,如日期加减、比较等。 这个模板是计算机科学竞赛选手的重要工具,它涵盖了大量基础和高级算法,可以帮助参赛者快速解决问题。












剩余63页未读,继续阅读

- 壮壮装壮2013-07-27好用的模板代表,谢谢

- 粉丝: 653
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 中国电信湘潭分公司移动网络工程-机房单位工程施工组织设计.doc
- 《机械制造其自动化》专业硕士研究方案生培养方案.doc
- 试论以企业战略为导向的软件企业全面预算管理1.docx
- 从勒索病毒看网络信息安全的隐患与对策.docx
- 算法分析与设计-大型实验报告样本.doc
- 校园无线网络的设计方案.doc
- 大学计算机基础教材Windows操作系统安装.ppt
- Web图书管理系统设计方案与开发.doc
- 软件水平测验考试网络工程师学习笔记汇总(完整版).doc
- 网络剧盈利模式.doc
- 互联网金融发展对我国宏观经济增长的影响研究.docx
- 互联网+技术在电力智能配网运维系统中应用.docx
- 电子科技16春《网络互连与路由技术》在线作业3.doc
- 学生综合管理系统-java课程设计.doc
- 计算机软件开发过程及嵌入式软件的应用.docx
- 关于网络犯罪的法律思考.docx


