常见算法模板整理汇总
需积分: 9 83 浏览量
更新于2024-07-30
收藏 356KB PDF 举报
ACM模板整理
ACM 模板整理是指在 ACM 竞赛中常用的算法和数据结构的总结和整理,本文档对 ACM 模板进行了分类和整理,总共分为六个部分:数学问题、字符串处理、计算几何、数论、图论和排序/查找。
**数学问题**
数学问题是 ACM 竞赛中的基本问题,包括精度计算、任意进制转换、最大公约数、最小公倍数、组合序列、快速傅立叶变换(FFT)、Ronberg 算法计算积分、行列式计算、求排列组合数、求某一天星期几、卡特兰(Catalan)数列原理、杨辉三角、全排列、匈牙利算法----最大匹配问题、最佳匹配 KM 算法等。
1. 精度计算:大数阶乘、乘法(大数乘小数)、乘法(大数乘大数)、加法、减法等。
2. 任意进制转换:将十进制数转换为其他进制数。
3. 最大公约数和最小公倍数:计算两个数的最大公约数和最小公倍数。
4. 组合序列:计算组合数的公式和应用。
5. 快速傅立叶变换(FFT):快速傅立叶变换的原理和应用。
6. Ronberg 算法计算积分:使用 Ronberg 算法计算定积分。
7. 行列式计算:计算行列式的值和应用。
8. 求排列组合数:计算排列组合数的公式和应用。
9. 求某一天星期几:计算某一天是星期几。
10. 卡特兰(Catalan)数列原理:卡特兰数列的定义和应用。
11. 杨辉三角:杨辉三角的定义和应用。
12. 全排列:计算全排列的公式和应用。
13. 匈牙利算法----最大匹配问题:使用匈牙利算法解决最大匹配问题。
14. 最佳匹配 KM 算法:使用 KM 算法解决最佳匹配问题。
**字符串处理**
字符串处理是 ACM 竞赛中的重要问题,包括字符串替换、字符串查找、字符串截取、LCS-最大公共子串长度、数字转换为字符等。
1. 字符串替换:将字符串中的某些字符替换为其他字符。
2. 字符串查找:在字符串中查找某些字符或子串。
3. 字符串截取:截取字符串中的某些字符或子串。
4. LCS-最大公共子串长度:计算两个字符串的最大公共子串长度。
5. 数字转换为字符:将数字转换为字符。
**计算几何**
计算几何是 ACM 竞赛中的重要问题,包括叉乘法求任意多边形面积、求三角形面积、两矢量间角度、两点距离(2D、3D)、射向法判断点是否在多边形内部、判断点是否在线段上、判断两线段是否相交、判断线段与直线是否相交、点到线段最短距离、求两直线的交点等。
1. 叉乘法求任意多边形面积:使用叉乘法计算任意多边形的面积。
2. 求三角形面积:计算三角形的面积。
3. 两矢量间角度:计算两矢量之间的角度。
4. 两点距离(2D、3D):计算两点之间的距离。
5. 射向法判断点是否在多边形内部:使用射向法判断点是否在多边形内部。
6. 判断点是否在线段上:判断点是否在线段上。
7. 判断两线段是否相交:判断两线段是否相交。
8. 判断线段与直线是否相交:判断线段与直线是否相交。
9. 点到线段最短距离:计算点到线段的最短距离。
10. 求两直线的交点:计算两直线的交点。
**数论**
数论是 ACM 竞赛中的重要问题,包括 x 的二进制长度、返回 x 的二进制表示中从低到高的第 i 位、模取幂运算、求解模线性方程、筛法素数产生器、判断一个数是否素数、求距阵最大和、求一个数每一位相加之和、质因数分解、高斯消元法解线性方程组等。
1. x 的二进制长度:计算 x 的二进制长度。
2. 返回 x 的二进制表示中从低到高的第 i 位:返回 x 的二进制表示中从低到高的第 i 位。
3. 模取幂运算:计算模取幂运算的结果。
4. 求解模线性方程:求解模线性方程的解。
5. 筛法素数产生器:使用筛法产生素数。
6. 判断一个数是否素数:判断一个数是否素数。
7. 求距阵最大和:计算距阵的最大和。
8. 求一个数每一位相加之和:计算一个数每一位相加之和。
9. 质因数分解:将一个数分解为质因数。
10. 高斯消元法解线性方程组:使用高斯消元法解线性方程组。
**图论**
图论是 ACM 竞赛中的重要问题,包括 Prim 算法求最小生成树、Dijkstra 算法求单源最短路径、Bellman-ford 算法求单源最短路径、Floyd-Warshall 算法求每对节点间最短路径、解欧拉图等。
1. Prim 算法求最小生成树:使用 Prim 算法求最小生成树。
2. Dijkstra 算法求单源最短路径:使用 Dijkstra 算法求单源最短路径。
3. Bellman-ford 算法求单源最短路径:使用 Bellman-ford 算法求单源最短路径。
4. Floyd-Warshall 算法求每对节点间最短路径:使用 Floyd-Warshall 算法求每对节点间最短路径。
5. 解欧拉图:解欧拉图的定义和应用。
**排序/查找**
排序/查找是 ACM 竞赛中的重要问题,包括快速排序、归并排序、堆排序、插入排序、查找算法等。
本文档对 ACM 模板进行了分类和整理,对 ACM 竞赛中的常用算法和数据结构进行了总结和整理,为 ACM 竞赛的选手提供了一个系统的参考资料。
2019-05-06 上传
2021-03-30 上传
点击了解资源详情
2023-07-27 上传
2010-05-02 上传
2010-03-23 上传
2010-06-25 上传
2017-04-27 上传
liuzhanchen1987
- 粉丝: 380
- 资源: 14
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫