![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++算法竞赛
文章平均质量分 91
RoysterCDD
这个作者很懒,什么都没留下…
展开
-
【C++算法模板】KMP算法:字符串匹配算法
在做模式串与文本串的匹配问题时,匹配失败时,如果每次都只向后递进一位,时间复杂度为O(n+m),很容易被卡成O(m×n),所以为了降低字符串匹配算法的时间复杂度,对模式串中的每一位,设置唯一的特定变化位置,这个在失配之后的特定变化位置可以帮助我们利用已有的数据不用从头匹配,从而节约时间用ne数组记录到它为止的模式串前缀的真前缀和真后缀最大相同的位置原创 2024-04-14 10:15:13 · 907 阅读 · 0 评论 -
【C++算法模板】背包九讲(下):混合背包、二维费用背包、带依赖的背包、背包求方案数、背包求具体方案
【代码】【C++算法模板】背包九讲(下):混合背包、二维费用背包、带依赖的背包、背包求方案数、背包求具体方案。原创 2024-04-14 10:11:19 · 1086 阅读 · 0 评论 -
【C++算法模板】数论:欧拉筛,线性查找质数的算法
传统找质数的方法就算优化枚举次数时间复杂度依然很高,此时可以采取线性筛质数的方法——欧拉筛原创 2024-04-13 15:05:47 · 887 阅读 · 0 评论 -
【C++算法模板】最小生成树:朴素Prim算法、并查集优化的Kruskal算法详解
模板能使用的前提是:不存在负权环原创 2024-04-13 14:59:05 · 1136 阅读 · 0 评论 -
【C++算法模板】背包九讲(上):01背包、完全背包、多重背包
如果按照类似于完全背包从状态转移方程式入手的角度来优化是不可行的,因为完全背包问题不会多最后一项出来,多了一个。背包,再通过二进制优化的方式把从枚举。的判定条件,最后一项会因为超出了。原创 2024-04-11 22:11:45 · 924 阅读 · 0 评论 -
【C++算法】线性DP详解:数字三角形、最长上升子序列、最长公共子序列、最长公共子串、字符串编辑距离
【代码】【C++算法】线性DP详解:数字三角形、最长上升子序列、最长公共子序列、最长公共子串、字符串编辑距离。原创 2024-04-11 22:09:56 · 1493 阅读 · 0 评论 -
【C++算法模板】单调队列维护滑动窗口最大最小值、维护连续子序列最大和
用于求滑动窗口内的最小值和最大值和维护连续子序列最大和的两个模板原创 2024-04-09 20:51:33 · 694 阅读 · 0 评论 -
【C++算法】任意进制转换为十进制、十进制转换为任意进制模板详解(最高三十六进制)
【代码】【C++算法】任意进制转换为十进制、十进制转换为任意进制模板详解(最高三十六进制)原创 2024-04-09 20:48:44 · 561 阅读 · 0 评论 -
【C++算法模板】并查集详解,一种处理不相交集合的合并与查询的数据结构
并查集是用于处理不相交集合的合并与查询的树形数据结构原创 2024-03-26 20:11:50 · 938 阅读 · 0 评论 -
【C++算法】深度优先搜索详解,入下回离,附带三道例题详细注释
深搜是通过系统栈实现的,递归调用的过程,系统自动通过栈去维护函数的状态空间,系统栈记录函数返回地址、局部变量、参数传递等,向下走,是压栈的过程;向上走,是出栈的过程原创 2024-03-26 19:59:30 · 664 阅读 · 0 评论 -
【C++函数速查】substr字符串截取函数详解
【C++函数速查】substr字符串截取函数详解。原创 2024-03-24 14:06:57 · 1120 阅读 · 0 评论 -
【C++算法】洛谷P1102:A-B数对,思路,lower_bound,upper_bound,二分答案,代码详解
* 这道题要求我们在序列中找到 $A-B=C$ 的数对的个数,下标不同的数对算作不同的数对* 如果采用常规做法就是两层循环,每个数字依次作为 $B$ ,在从其之后的元素选出元素与之相减,看得到的结果是不是 $C$,是的话 $ans++$ ,这是枚举的做法* 我们不妨换一个思路,既然我们枚举每个数字作为 $B$,那么B就是确定的,**题目中的 $C$ 也是确定的,$A-B=C$ 问题,我们就可以转换为 $B+C=A$ 问题,对于每一个数字 $B$,我们在其之后的元素中,去找有多个元素恰好比 $B$ 大 $原创 2024-03-24 11:02:34 · 944 阅读 · 0 评论 -
【C++算法】二分算法、二分模板详解,四道例题带详细注释
第一次出现,求第一个大于等于/大于/小于/小于等于某个数的数,求解最小值,说明答案在左边,用第一个模板。最后一次出现,最后一个大于等于/大于/小于/小于等某个数的数,求解最大值,说明答案在右边,用第二个模板。题目中出现求最值,首先想到二分/贪心/动态规划等算法。题目具有单调性,则可以考虑用二分求解。题目链接:[P1873。原创 2024-03-22 11:18:34 · 2140 阅读 · 0 评论 -
【C++算法模板】AC自动机模板、注释详细、带例题详解
AC自动机是多模式匹配算法,给定n个模式串和一个主串,查找有多少个模式串在主串中出现过。【C++算法模板】字典树,超详细注释带例题讲解-CSDN博客。原创 2024-03-21 09:37:01 · 793 阅读 · 0 评论 -
【C++算法模板】预处理算法:一维差分、二维差分总结,详解带例题
差分的推导也比较简单,因此本博客重点在于知识点归纳而不在于证明。原创 2024-03-17 12:30:43 · 929 阅读 · 0 评论 -
【C++算法模板】预处理算法:一维前缀和、二维前缀和总结,详解带例题
因为前缀和这个板子的推导比较简单,因此本博客重点在于知识点归纳而不在于证明原创 2024-03-17 12:28:40 · 1185 阅读 · 0 评论 -
【C++算法模板】图论-拓扑排序,超详细注释带例题
给定一张有向无环图,排出所有顶点的一个序列A满足:对于图中的每条有向边(x,y),其中x在A中都出现在y之前,则称A是该图的顶点的一个拓扑序拓扑排序 可以判断有向图中是否有环,可以生成拓扑序列对于下图,2351746和3215764都是合法的拓扑序【C++算法模板】图的存储-邻接表,手撕链式前向星,超详细代码注释-CSDN博客。原创 2024-03-15 21:04:24 · 1210 阅读 · 0 评论 -
【C++函数速查】lower_bound和upper_bound使用方法详细解读
lowerbound和upperbound都是基于二分查找在一个排好序的数组或容器(如vector、list、set)中进行快速查找的函数,位于algorithm标准库中,由于采用二分查找,所以函数的时间复杂度是O(log_2^n)。原创 2024-03-15 08:07:30 · 3136 阅读 · 1 评论 -
【C++算法模板】字典树,超详细注释带例题讲解
字典树是快速插入和查询字符串的多叉树结构,根节点编号为0,其余节点标识路径,还可以标记单词插入的次数,边表示字符。原创 2024-03-14 23:38:31 · 532 阅读 · 1 评论 -
【C++算法模板】字符串哈希,超详细注释带例题
字符串哈希即把不同的字符串映射成不同的整数把字符串映射成一个p进制数字,对于一个长度为n的字符串s,定义其HashHashHash函数为:$ h(s)=\sum_{i=1}^n s[i]×p^{i-1}(mod M)$原创 2024-03-12 22:16:32 · 1305 阅读 · 2 评论 -
【C++函数速查】字符数组/字符串大小比较 strcmp、compare、字符串按数值比较技巧详解
以字符形式存储到字符数组/字符串中,现在要比较这两个字符数组/字符串的大小关系如果直接使用前文的比较方法。如果在字符数组/字符串中按下标对其的话又略嫌麻烦,显然是想让。的情况下)返回长度更长的那个数字,当长度相等的时候直接用。开始存储,这个时候我们可以(在没有前导。码逐位比较就会出问题),因为。比如现在有两个数字,原创 2024-03-11 09:58:12 · 3554 阅读 · 0 评论 -
【C++算法模板】图的存储-邻接矩阵
邻接矩阵相比于上一篇博客邻接表的讲解要简单得多1. 数据结构,如果将二维数组 g 定义为全局变量,那默认初始化应该为 0 ,如果题目中存在自环,可以做特判,memset 初始化数组 g 为 0x3f3f3f3f 表示无穷大,0 表示自环 2. 以下模板是无向图的邻接矩阵模板,如果改成有向图,和邻接表一样,不需要对称建边,比如有一条边是 (1,3)原创 2024-03-09 12:02:31 · 935 阅读 · 0 评论 -
【C++算法模板】图的存储-邻接表,手撕链式前向星,超详细代码注释
1. 模板采用的是无向图,所以最大边数 M 开到了题目所给最大边数的两倍,如果是有向图,那么在建边的时候,只需要建一次即可,比如 a 到 b 有一条边,那么只需要 add(a,b) ,不需要 add(b,a) 对称建边2. 链式前向星(也称数组模拟邻接表)的数据结构为:原创 2024-03-09 11:30:43 · 836 阅读 · 1 评论 -
【C++算法】贪心算法-区间问题,超详细注释例题讲解
贪心策略:新建一个结构体存储区间的左端点和右端点,将这N个区间按照右端点从小到大排序,遍历所有的区间,如果当前遍历到的区间左端点的值大于了上一个区间的右端点的值,说明此时区间没有重合,则区间个数+1原创 2024-03-08 20:55:50 · 1080 阅读 · 1 评论 -
【C++算法】桶、桶排序、map详细讲解,带例题和详细注释
当数组中每个元素的大小范围给定时并且不超过空间限制时,用该数组的下标或下标+偏移量映射为该值的大小,数组的值表示该数字出现的次数的数据结构,优点:有效提高数据的访问效率和处理速度,缺点:必须知道每个元素的大小范围并且能够映射到[0,N]才可以使用原创 2024-03-06 13:46:04 · 1024 阅读 · 0 评论 -
【C++算法】离散化模板代码,超详细注释附带例题
上篇博客我们介绍了桶结构,假设现在给我们一个序列,数据范围是−109109−109109,显然我们是不能再用一个数组来存的所以现在需要做的就是把大范围的数据映射到小范围数据,如:将−123456789-123456789−123456789映射到555,那么a5−123456789a5−123456789,统计的时候直接cnt3cnt[3]++cnt3即可,这便是离散化怎么快速的映射,并且让映射的数字相互之间不冲突?原创 2024-03-06 13:43:03 · 1072 阅读 · 0 评论 -
【C++算法】递推(斐波那契、上台阶问题)代码详解
例题来自于信奥一本通1188、1189、1190,C++实现递推算法-斐波那契数列、线性动态规划算法-上台阶问题,详细讲解,附带源码原创 2024-03-06 13:41:15 · 1307 阅读 · 0 评论