自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 CSP-J/S 2025 游记

CSP-J/S 比赛总结:J组T1、T2顺利AC,但T3贪心算法可能有误,T4仅得部分分,总分约220-300。S组遭遇难题,T1暴力解,T2时间复杂度估算错误,T3、T4几乎无分,总分最高125分。与周围选手差距拉大,对自己的OI水平产生怀疑,可能面临竞赛生涯的终结。总体表现未达预期,反映出算法基础和临场发挥的不足。

2025-11-05 16:54:08 241

原创 树状数组的原理和简单实现:一种使用倍增优化并支持在线 O(log N) 修改、查询的数据结构

本文介绍了树状数组的原理及其应用。首先通过lowbit函数的定义和原理,解释了如何利用二进制补码快速计算最低位的1。然后详细阐述了树状数组的实现原理,包括其存储结构和四个关键性质。接着给出了树状数组的核心操作:插入操作的add函数和求和操作的query函数的具体实现,它们都基于lowbit函数进行高效遍历。最后提供了完整的C++模板类实现。树状数组能够将区间查询和单点修改的时间复杂度优化到O(logN),适用于解决大规模数据处理问题。

2025-10-01 21:48:38 628

原创 CSP-S 难度的数学方法讲解:分解质因数的运用、欧拉函数、逆元、组合数

本文讲述了分解质因数、欧拉函数、逆元、组合数等数学知识,并分析了每个算法的时间复杂度,给出了多种不同的实现方式。

2025-08-22 12:25:08 872

原创 矩阵与高斯消元:数学算法在计算机领域的应用

本文介绍了矩阵的基本概念和运算方法,重点讲解了高斯消元法在解线性方程组中的应用。主要内容包括:1)矩阵的定义和基本运算(加法、乘法、幂运算)及其实现;2)矩阵运算的性质(交换律、结合律、分配律)及证明;3)特殊矩阵单位矩阵及其性质;4)矩阵的行初等变换(对换、倍乘、倍加变换)。文章还提供了矩阵类的C++实现代码,展示了如何通过运算符重载实现矩阵运算,并利用快速幂优化矩阵幂运算。这些内容为理解和应用矩阵运算奠定了理论基础。

2025-08-04 13:54:42 1054

原创 KMP 算法:解决字符串匹配问题的高效算法

KMP算法是一种高效的字符串匹配算法,通过预处理模式串T生成next数组,记录最长公共前后缀信息,从而在主串S匹配时避免不必要的回溯,将时间复杂度从暴力匹配的O(nm)优化至O(n+m)。核心步骤包括:1) 计算next数组,利用前后缀性质动态调整匹配位置;2) 双指针遍历主串和模式串,根据next数组跳转失配位置。KMP算法还可扩展求解字符串循环节、不重叠子串匹配等问题,是处理大规模字符串匹配的基础算法。

2025-07-28 14:19:50 1030

原创 最小生成树算法的解题思路与 C++ 算法应用

本文介绍了两种最小生成树算法:Prim算法和Kruskal算法。Prim算法以点为对象,通过贪心策略逐步扩展生成树,适用于稠密图;Kruskal算法以边为对象,通过排序和并查集选择边,适用于稀疏图。文章通过具体示例详细说明了两种算法的执行过程,并提供了代码实现。最小生成树算法可用于解决连通图的最小边权结构问题,具有广泛的实际应用价值。

2025-06-18 21:00:21 870

原创 并查集:合并多个元素为一个集合的操作方法

并查集是一种高效的森林状数据结构,主要用于处理合并集合和查询元素关系的操作,时间复杂度约为O(α(n))。其核心思想是将元素的父节点指向根节点,实现快速查找和合并。算法框架包括初始化、路径压缩优化和合并操作。典型应用包括判断元素是否同属一个集合以及查询集合大小。通过维护父节点数组和集合大小数组,并查集能高效解决依赖关系、连通性等问题。文章详细介绍了并查集的实现原理、代码框架及两种常见应用场景,为相关算法问题提供了优化解决方案。

2025-06-04 21:37:14 1102

原创 初等数论基础知识详细解析(1)

本文探讨了整数整除的若干性质。首先,定义了整除关系,并证明了其传递性:若 (a) 整除 (b) 且 (b) 整除 (c),则 (a) 整除 (c)。其次,证明了线性组合性质:若 (a) 整除 (b) 和 (c),则 (a) 整除 (bx + cy)。接着,通过数学归纳法证明了 (k) 个连续自然数的积能被 (k!) 整除。最后,通过小规模数据验证了费马小定理:若 (p) 为质数,则 (p) 整除 (n^p - n)。这些性质为整数理论中的进一步研究提供了基础。

2025-05-16 19:58:12 1064

原创 基于 Dijkstra 最短路算法实现的次短路算法

基于最短路算法实现的次短路算法,实现了同时计算最短路径长和次短路径长

2025-05-12 21:42:51 1068

原创 递推、递归:将大目标分解为小目标的处理方法

递推、递归是计算机算法设计中常用的集中基础算法。递推是从第一步开始,根据一个特定的规律或转移方程层层推进,直到推出答案所在状态位置为止。递归是从第一个可能性开始,枚举所有的可能性,并且根据这些可能性来找出最后的答案。递推经常被用作 DP 中实现状态转移,递归会常常被用作 DFS 枚举所有的可能性来找到正确答案,而分治的用途十分广泛,可以使用分治来获得更高的效率。关于时间复杂度,递推的时间复杂度通常为线型On,递归的时间复杂度通常为多项式级Onk或者指数级Okn或者阶乘级On。

2025-05-01 12:39:10 1127

原创 扩展欧几里得算法的使用及简单证明

扩展欧几里得算法(ExGcd)是基于传统欧几里得算法的实现,主要用于计算不定方程axbygcdabab∈Z的一组特殊整数解。类似于传统的欧几里得算法计算gcdab时将gcdab转化为gcdbamodb,扩展欧几里得算法通过类似的系数辗转相除法求出xy的一组解。如果我们不使用扩展欧几里得算法计算axbygcdabaxbygcdab移项,得axgcdab−by系数化为1,得xagcd。

2025-04-19 14:05:39 2209 2

原创 多源最短路的两种做法和详细解析

多源最短路的分析和讲解,讲解 Floyd 算法的原理和代码实现。

2025-04-14 21:36:02 2186

原创 位运算:利用计算机的二进制计算原理进行运算的 C++ 运算符

C++位运算详解,攻坚克难,解决算法学习中不可绕开的难点。

2025-04-09 21:40:36 1966

原创 贪心算法的应用实例:子问题的局部最优解可推导出全局最优解

贪心算法的例题实现,两种不同的贪心算法变形,分别给出贪心算法证明和代码实现。

2025-04-05 19:10:14 1100

原创 单源最短路算法汇总、分析、整理、实现与简单变形(C++ 语言描述)

单源最短路:Dijkstra(链接),Bellma-Ford,SPFA算法的思想、算法实现和简单变形,用C++语言描述,并对其中的重要引理给出简单证明

2025-04-01 21:28:17 1064

原创 “24点”计算问题的算法分析和C++语言实现

int a[8];//用来存储输入的数字int v[8];//用来在搜索过程中记录每个数字是否被使用过,避免重复搜索//记录运算过程中产生的表达式,其中的每个 string 记录这一次运算后的整个表达式string ans;//用来存储字典序最小的答案。

2025-03-29 13:37:22 1117

原创 dijkstra算法详解

Dijkstra 算法的详细解析,包括 O(N^2) 做法和 O(NlogN) 做法,在最深层次提取 Dijkstra 算法的原理并生动用图片分析

2025-03-23 21:16:32 1188

原创 洛谷 P3612 [USACO17JAN] Secret Cow Code S 题解

我们现在有一个无限的序列,这个序列由无限次翻转构成。个位置,再将这样做得到的新序列拼接在原序列的后面,这样得到一个长度为。通过分析样例,我们可以得知,假设一个元素位于新序列中的第。所以,我们可以使用模拟这个过程的算法,重复将。为常数) 时间复杂度的算法来解决这个问题。的序列整体向后移动一位,并将原序列的第。是否成立,若为否,则退出循环。的数据范围,可以在时间范围内输出答案。,那么这个元素位于原序列中的第。这样,这个过程的时间复杂度为。,这种方法结构的时间复杂度为。,所有算法的时间复杂度为。

2025-03-18 20:50:45 295

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除