自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 倍增与RMQ(详细版)

本文介绍了倍增思想及其在算法中的应用。倍增法通过每次将处理范围扩大一倍,将线性时间复杂度优化为对数级,常用于RMQ问题和LCA求解。文章通过砝码称重和前缀和查询两个例子说明倍增思想,并详细讲解了ST表实现RMQ问题的过程:预处理阶段使用DP+倍增思想构建查询表,查询阶段通过预处理的对数表实现O(1)时间复杂度的区间最值查询。最后给出了使用ST表解决RMQ问题的C++代码实现,包含预处理、建表和查询处理的全过程。

2025-07-29 13:12:53 951

原创 线段树(详解c++)

c. 线段树的叶节点即为原序列,内部节点除了左右儿子之外,还保存着其分管的某段 区间信息,如区间和、区间最值。a. 线段树是:利用分治思想处理对一段序列进行大量区间操作(区间修改、区间查询) 的数据结构;使用线段树的问题,必须符合区间加法: 也就是通过合并区间的解, 一定能得到问题的解。b. 最长连续出现的字母:无法根据左右区间的最长连续出现的字母,得知总区间的解;c. 通过对子区间的修改或统计,来实现快速对[L,R] 区间的修改、统计。b. 线段树可以在。的时间复杂度内,完成。

2025-07-18 15:21:04 1215

原创 树状数组详解(简单超基础超详细c++)

树状数组原理与应用 树状数组是一种高效处理动态区间操作的数据结构,支持单点修改和区间查询,时间复杂度均为O(log n)。其核心思想是将前缀和拆分为多个子序列的和,利用lowbit函数(x&-x)快速定位子区间。树状数组的每个节点c[x]维护长度为lowbit(x)的区间和,通过父节点x+lowbit(x)形成树状结构。典型操作包括:单点修改(向上更新父节点)和前缀查询(向下累加子区间)。适用于频繁修改与求和的场景,如例题中动态维护数组区间和。实际应用中需注意下标从1开始以避免死循环。

2025-07-16 17:38:15 1318

原创 AC自动机详解(c++超详细版)

摘要: AC自动机是高效的多模式串匹配算法,结合了字典树(Trie)和KMP算法的思想。其核心步骤包括:1) 构建字典树存储模式串;2) 通过BFS为每个节点计算next指针(类似KMP的失败跳转);3) 扫描主串时利用next指针优化匹配。例题展示了如何统计文章中出现的单词数,实现时需注意初始化、Trie构建、next求解及匹配逻辑。AC自动机的时间复杂度为线性,适用于大规模文本匹配场景。

2025-07-15 11:47:00 415

原创 Trie字典树

本文介绍了Trie树(字典树)的实现原理及代码模板。通过图示解释了Trie树的构建过程,其中cnt数组记录字符串数量,邻接矩阵表示字符间的连接关系。提供的C++模板代码包含插入和查询两个核心功能:插入通过遍历字符建立节点并标记结尾,查询则沿着字符路径检查是否存在目标字符串。该模板适用于字符串的存储和快速查找,时间复杂度为O(L),其中L为字符串长度。代码简洁高效,可作为字符串处理的基础工具。

2025-07-14 20:50:13 200

原创 KMP字符串匹配(超详细c++版)

给定父串s和子串p,判断p在s中出现的起始位置(或p在s中出现的次数)遍历s和p,通过一个个字符的匹配进行判断(速度太慢)通过跳过一定相同的部分来加快判断。s为 abcabcde。

2025-07-14 20:37:04 366

空空如也

空空如也

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

TA关注的人

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