OI算法分析
文章平均质量分 95
个人对OI算法的学习笔记
Aobing_peterJr
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树状数组的原理和简单实现:一种使用倍增优化并支持在线 O(log N) 修改、查询的数据结构
本文介绍了树状数组的原理及其应用。首先通过lowbit函数的定义和原理,解释了如何利用二进制补码快速计算最低位的1。然后详细阐述了树状数组的实现原理,包括其存储结构和四个关键性质。接着给出了树状数组的核心操作:插入操作的add函数和求和操作的query函数的具体实现,它们都基于lowbit函数进行高效遍历。最后提供了完整的C++模板类实现。树状数组能够将区间查询和单点修改的时间复杂度优化到O(logN),适用于解决大规模数据处理问题。原创 2025-10-01 21:48:38 · 706 阅读 · 0 评论 -
CSP-S 难度的数学方法讲解:分解质因数的运用、欧拉函数、逆元、组合数
本文讲述了分解质因数、欧拉函数、逆元、组合数等数学知识,并分析了每个算法的时间复杂度,给出了多种不同的实现方式。原创 2025-08-22 12:25:08 · 1023 阅读 · 0 评论 -
矩阵与高斯消元:数学算法在计算机领域的应用
本文介绍了矩阵的基本概念和运算方法,重点讲解了高斯消元法在解线性方程组中的应用。主要内容包括:1)矩阵的定义和基本运算(加法、乘法、幂运算)及其实现;2)矩阵运算的性质(交换律、结合律、分配律)及证明;3)特殊矩阵单位矩阵及其性质;4)矩阵的行初等变换(对换、倍乘、倍加变换)。文章还提供了矩阵类的C++实现代码,展示了如何通过运算符重载实现矩阵运算,并利用快速幂优化矩阵幂运算。这些内容为理解和应用矩阵运算奠定了理论基础。原创 2025-08-04 13:54:42 · 1199 阅读 · 0 评论 -
KMP 算法:解决字符串匹配问题的高效算法
KMP算法是一种高效的字符串匹配算法,通过预处理模式串T生成next数组,记录最长公共前后缀信息,从而在主串S匹配时避免不必要的回溯,将时间复杂度从暴力匹配的O(nm)优化至O(n+m)。核心步骤包括:1) 计算next数组,利用前后缀性质动态调整匹配位置;2) 双指针遍历主串和模式串,根据next数组跳转失配位置。KMP算法还可扩展求解字符串循环节、不重叠子串匹配等问题,是处理大规模字符串匹配的基础算法。原创 2025-07-28 14:19:50 · 1143 阅读 · 0 评论 -
最小生成树算法的解题思路与 C++ 算法应用
本文介绍了两种最小生成树算法:Prim算法和Kruskal算法。Prim算法以点为对象,通过贪心策略逐步扩展生成树,适用于稠密图;Kruskal算法以边为对象,通过排序和并查集选择边,适用于稀疏图。文章通过具体示例详细说明了两种算法的执行过程,并提供了代码实现。最小生成树算法可用于解决连通图的最小边权结构问题,具有广泛的实际应用价值。原创 2025-06-18 21:00:21 · 939 阅读 · 0 评论 -
并查集:合并多个元素为一个集合的操作方法
并查集是一种高效的森林状数据结构,主要用于处理合并集合和查询元素关系的操作,时间复杂度约为O(α(n))。其核心思想是将元素的父节点指向根节点,实现快速查找和合并。算法框架包括初始化、路径压缩优化和合并操作。典型应用包括判断元素是否同属一个集合以及查询集合大小。通过维护父节点数组和集合大小数组,并查集能高效解决依赖关系、连通性等问题。文章详细介绍了并查集的实现原理、代码框架及两种常见应用场景,为相关算法问题提供了优化解决方案。原创 2025-06-04 21:37:14 · 1207 阅读 · 0 评论 -
dijkstra算法详解
Dijkstra 算法的详细解析,包括 O(N^2) 做法和 O(NlogN) 做法,在最深层次提取 Dijkstra 算法的原理并生动用图片分析原创 2025-03-23 21:16:32 · 1293 阅读 · 0 评论 -
单源最短路算法汇总、分析、整理、实现与简单变形(C++ 语言描述)
单源最短路:Dijkstra(链接),Bellma-Ford,SPFA算法的思想、算法实现和简单变形,用C++语言描述,并对其中的重要引理给出简单证明原创 2025-04-01 21:28:17 · 1132 阅读 · 0 评论 -
贪心算法的应用实例:子问题的局部最优解可推导出全局最优解
贪心算法的例题实现,两种不同的贪心算法变形,分别给出贪心算法证明和代码实现。原创 2025-04-05 19:10:14 · 1224 阅读 · 0 评论 -
位运算:利用计算机的二进制计算原理进行运算的 C++ 运算符
C++位运算详解,攻坚克难,解决算法学习中不可绕开的难点。原创 2025-04-09 21:40:36 · 2057 阅读 · 0 评论 -
多源最短路的两种做法和详细解析
多源最短路的分析和讲解,讲解 Floyd 算法的原理和代码实现。原创 2025-04-14 21:36:02 · 2271 阅读 · 0 评论 -
扩展欧几里得算法的使用及简单证明
扩展欧几里得算法(ExGcd)是基于传统欧几里得算法的实现,主要用于计算不定方程axbygcdabab∈Z的一组特殊整数解。类似于传统的欧几里得算法计算gcdab时将gcdab转化为gcdbamodb,扩展欧几里得算法通过类似的系数辗转相除法求出xy的一组解。如果我们不使用扩展欧几里得算法计算axbygcdabaxbygcdab移项,得axgcdab−by系数化为1,得xagcd。原创 2025-04-19 14:05:39 · 2370 阅读 · 1 评论 -
递推、递归:将大目标分解为小目标的处理方法
递推、递归是计算机算法设计中常用的集中基础算法。递推是从第一步开始,根据一个特定的规律或转移方程层层推进,直到推出答案所在状态位置为止。递归是从第一个可能性开始,枚举所有的可能性,并且根据这些可能性来找出最后的答案。递推经常被用作 DP 中实现状态转移,递归会常常被用作 DFS 枚举所有的可能性来找到正确答案,而分治的用途十分广泛,可以使用分治来获得更高的效率。关于时间复杂度,递推的时间复杂度通常为线型On,递归的时间复杂度通常为多项式级Onk或者指数级Okn或者阶乘级On。原创 2025-05-01 12:39:10 · 1203 阅读 · 0 评论 -
基于 Dijkstra 最短路算法实现的次短路算法
基于最短路算法实现的次短路算法,实现了同时计算最短路径长和次短路径长原创 2025-05-12 21:42:51 · 1315 阅读 · 0 评论
分享