学习笔记
文章平均质量分 88
Bree_2012
读书不是为了记住,不是为了占有,就是为了在黑漆漆的远处,为自己多点一盏灯
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
树上启发式合并学习笔记
本文介绍了离线处理静态有根树子树问题的启发式合并算法。该算法通过优先处理重子节点并保留其信息,再处理轻子节点,将原本O(n²)的暴力解法优化至O(nlogn)。核心步骤包括两次遍历轻子树和保留重子树信息,利用了树剖中"轻边不超过logn条"的性质,确保每个节点最多被处理O(logn)次。算法适用于统计子树颜色、路径异或等可通过合并子树信息求解的问题,显著提升了处理效率。原创 2025-11-18 22:37:04 · 629 阅读 · 0 评论 -
扫描线学习笔记
本文介绍了计算矩形面积并和周长并的算法。对于面积并问题,通过扫描线算法将重叠矩形分解为无重叠部分,使用线段树维护当前覆盖宽度。对于周长并问题,在面积并算法基础上,额外统计独立横线数量并计算竖线长度变化。两种算法的时间复杂度均为O(n log n),适用于大规模数据。文章提供了对应的模板题代码实现,详细说明了线段树的维护方式和统计方法。原创 2025-07-25 21:24:40 · 903 阅读 · 0 评论 -
ST 表学习笔记
ST表是一种用于高效解决静态区间最值查询的数据结构,通过预处理倍增信息实现O(1)查询。其核心思想是将区间划分为两个有重叠的2^k长度子区间,通过预处理每个起点开始的不同长度区间的最大值。初始化时采用动态规划,st[j][i] = max(st[j][i-1], st[j+2^(i-1)][i-1])。查询时利用对数运算确定合适的k值,合并两个子区间结果。相比线段树,ST表实现更简单、常数更小,特别适合没有修改操作的场景。文末提供了洛谷模板题的实现代码。原创 2025-07-25 21:04:33 · 951 阅读 · 0 评论 -
KMP 学习笔记
本文介绍了字符串匹配问题及其解决方案。首先,暴力匹配算法通过枚举文本串中的每个位置并逐个比较字符来判断模式串是否出现,但其时间复杂度为 (O(|s| * |t|)),效率较低。随后,文章详细介绍了 KMP 算法,该算法通过预处理模式串的 nxt 数组来记录每个前缀的最长公共前后缀长度,从而在匹配过程中利用已匹配信息跳过不必要的比较,将时间复杂度优化至 (O(n + m))。KMP 算法的核心在于通过 nxt 数组的构建和应用,实现高效的字符串匹配。原创 2025-07-17 16:55:40 · 819 阅读 · 0 评论 -
Nim 游戏学习笔记
Nim游戏及其阶梯变形的胜负判定方法。公平组合游戏Nim中,n堆石子的异或和为x:若x=0则先手必败,否则必胜。阶梯Nim则将奇数层石子视为普通Nim堆,偶数层不影响结果,只需计算奇数层异或和即可判定胜负。通过分析不同操作对x值的影响,证明了最优策略的存在性。原创 2025-06-05 22:25:33 · 1057 阅读 · 0 评论 -
Manacher 学习笔记
本文介绍了求解最长回文子串的两种方法。暴力法通过以每个字符或空隙为中心向外扩展,时间复杂度为O(n²)。更高效的Manacher算法通过插入分隔符统一处理奇偶长度问题,利用回文对称性避免重复计算,将复杂度降至O(n)。算法核心是维护一个p数组记录每个中心的最长回文半径,并通过maxid和id变量优化扩展过程。最终p[i]-1即为原串中的回文长度。模板代码展示了如何实现该算法,其线性复杂度来自对字符串的单次遍历和有限次数的暴力扩展。原创 2025-07-17 22:41:42 · 1103 阅读 · 0 评论
分享