学习笔记
文章平均质量分 95
学习笔记=知识+个人理解,我会将我所能理解的尽可能呈现给大家。
cwplh
梦想终将引领着你,走向万丈光芒。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
线段树的时间和空间优化
本文介绍了优化线段树实现的多种方法,主要包括: I/O优化 - 使用scanf/printf替代cin/cout、关闭流同步、实现快读快输、使用fread/fwrite高级优化 递归改递推 - 减少递归调用的性能开销 离散化 - 将大值域映射到小范围内,降低空间和时间复杂度 结构体优化 - 使用结构体代替单独数组,提高CPU缓存命中率 C++函数特性 - 利用inline、const等关键字进行编译器优化 这些优化技巧可以有效提升线段树的执行效率,特别是在处理大规模数据时效果显著。文章还提供了相关优化的具体原创 2025-11-17 20:58:19 · 954 阅读 · 0 评论 -
线段树详解
本文介绍了线段树的基本概念和操作。首先通过二分查找思想引出线段树的单点查询功能,然后扩展到单点修改。重点讲解了区间查询和区间修改的实现方法:区间查询采用分治思想递归处理覆盖区间,区间修改引入懒标记(lazy tag)来提高效率。文中提供了详细的代码实现,包括查询、更新、pushdown和pushup等核心函数,并总结了线段树的三种经典应用模型:单点修改区间查询、区间修改单点查询、区间修改区间查询。线段树通过分治策略和懒标记技术,将操作时间复杂度优化到O(log n)。原创 2025-10-29 20:28:41 · 913 阅读 · 0 评论 -
DP大家族——关于DP的梳理
本文总结了动态规划(DP)的基本概念和实现方法,包括一维和二维DP的应用。DP的核心思想是利用已知状态推导新状态,主要实现方式为递推和递归(记忆化搜索)。文章通过斐波那契数列、最大连续子序列和(一维DP)、最长上升子序列(LIS)及其优化方法,以及二维DP中的“马拦过河卒”问题等经典例题,详细讲解了DP的解题思路和优化技巧。此外,还介绍了空间优化方法如滚动数组,并展示了不同场景下DP的具体应用,帮助读者逐步掌握动态规划的基础知识和解题策略。原创 2025-08-25 19:44:28 · 638 阅读 · 0 评论 -
Manacher(马拉车算法)详解
马拉车算法(Manacher Algorithm)是一种在O(n)时间复杂度内求解最长回文子串的高效算法。它通过在字符间插入特殊符号(如#)统一处理奇偶长度回文串。算法的核心思想是利用回文串的对称性,通过已知信息优化计算:维护当前最右回文串的中心c和半径r[c],对于新位置i,根据其对称点j的信息快速确定初始半径,再暴力扩展。相比传统O(n^2)方法大幅提升了效率。该算法代码简洁,只需一次遍历即可找到最长回文子串。原创 2025-08-21 19:37:30 · 664 阅读 · 0 评论 -
字典树(Trie 树)详解
本文介绍了Trie树的基本概念和应用。Trie树是一种用于处理字符串前缀问题的树形结构,通过将字符串的字符作为边来构建树,每个字符串的末尾节点会被标记。文章通过图示和代码展示了Trie的构建过程,并对比了暴力解法与Trie解法在查询问题上的效率差异,说明Trie能有效降低时间复杂度。最后预告下一篇文章将讲解AC自动机。原创 2025-07-16 19:33:13 · 1063 阅读 · 0 评论 -
KMP 详解
KMP算法详解:一种高效的字符串匹配技术 KMP算法由Knuth、Pratt和Morris三位科学家提出,解决了传统暴力字符串匹配效率低下的问题。该算法通过分析模式字符串的最长公共前后缀,避免不必要的比较操作,将时间复杂度从O(nm)优化到O(n+m)。核心在于构建next数组,记录模式字符串的匹配失败时应该回溯的位置。文章详细讲解了暴力枚举法的缺陷、KMP算法的思想精髓、next数组的构建过程以及完整的KMP实现代码,并附有图解说明。该算法思想深刻,代码简洁优美,是字符串处理领域的重要突破。原创 2025-07-15 08:24:21 · 879 阅读 · 0 评论 -
高斯消元法详解
高斯消元法是一种用于求解线性方程组的经典算法,通过矩阵变换将系数矩阵转化为上三角结构,最终实现方程求解。该算法不仅能解线性方程组,还可用于行列式计算和矩阵求逆。文章详细介绍了高斯消元的基本步骤,包括行变换、主元选取和回代过程,并分析了特殊情况(如主元为0)的处理方法。作者还提出了一种改进算法,通过全列消元和随机主元选择简化计算过程。时间复杂度均为O(n³),适用于计算机求解多元一次方程组。文末附有代码实现,展示了高斯消元在编程中的应用。原创 2025-07-04 21:16:21 · 1265 阅读 · 0 评论 -
数位 DP 详解
数位 DP 是一种用于数字数位统计的 DP,是一种简单的DP 套路题。(其实一点都不简单……)原创 2025-04-26 14:52:40 · 1222 阅读 · 0 评论 -
状压 DP 详解
状压 DP 其实约等于一个 DP 的小技巧,一般应用在处理一个或多个集合的问题中(因为状压 DP 的下标就是一个集合),而且在nnn太大的时候建议不要使用这种方法。(如果你不懂,那么就继续往下看。好吧你本来就不懂。原创 2025-05-02 22:09:57 · 1161 阅读 · 0 评论 -
点双连通分量,边双连通分量
本文介绍了图论中的两种连通分量算法。点双连通分量(v-dcc)定义为不含割点的极大连通子图,通过Tarjan算法识别割点(满足dfn[u]<=low[i]的非根节点或多子树的根节点),并用栈保存节点来划分点双。边双连通分量(e-dcc)则是极大不含桥的连通子图,其判定条件为dfn[x]<low[y],算法同样基于Tarjan,通过比较dfn和low值识别桥并划分边双。两种算法均采用深度优先搜索和栈结构实现分量划分,核心代码展示了具体的实现逻辑。原创 2025-06-03 16:07:21 · 760 阅读 · 0 评论 -
寒假学习笔记【匠心制作,图文并茂】——1.20拓扑、强连通分量、缩点
本文介绍了两种重要的图论算法:拓扑排序和强连通分量(SCC)。拓扑排序是将有向无环图(DAG)节点线性排序的算法,通过不断移除入度为0的节点实现。强连通分量则是图中极大强连通子图,Tarjan算法通过深度优先搜索和dfn/low数组标记来识别SCC。文章还介绍了缩点技术,即将SCC合并为单个节点构建新图,便于后续处理。这两种算法在解决图论问题时非常有用,尤其适合处理依赖关系、环路检测等场景。原创 2025-05-31 23:54:59 · 1379 阅读 · 0 评论 -
2.27学习笔记——关于同余最短路的补充
上面的过程中省略了一些步骤,还用了一些数学符号,但我相信应该能看懂,看不懂的可以抠破脑袋想。当然这就有个问题:这费马小定理有什么用呢?互质的数所构成的集合叫做最简剩余系。这也很好理解,相信大家都能想通,就不多讲了。的最简剩余系的长度,假设一个数。然后我们把左右两边同时除以一个。为质数时,我们就可以得到。互质,则我们可以得到。原创 2025-02-27 16:48:15 · 639 阅读 · 0 评论 -
寒假学习笔记【匠心之作,图文并茂】——1.19树的重心、直径、树形 DP
很简单,我们只需要用一个 dfs,然后从根节点开始往下搜,然后搜它的子树的大小,再把自身的大小加上它子树的大小表示这棵树总的大小,然后取子树大小中的最大值,最后更新答案。(这里以及下文中的「子树」若无特殊说明都是指无根树的子树,即包括「向上」的那棵子树,并且不包括整棵树自身。我们这样思考:假设我现在把根转移给了我的子节点,那么被我转移了的那个子节点的总深度就少了。为根节点往下的总的点数),而其他的子树的总深度就加上了。现在应该就明白了重心的定义了吧。为根的子树大小(即子树上结点的个数,包括根结点)。原创 2025-02-18 16:44:52 · 1120 阅读 · 0 评论 -
寒假学习笔记【匠心制作,图文并茂】——1.18倍增、ST表与LCA
现在,国土安全局局长希望知道,至少需要多少名边防战士,才能使得他们的奔袭区间覆盖全部的边境线,从而顺利地完成国旗计划。不仅如此,安全局局长还希望知道更详细的信息:对于每一名边防战士,在他必须参加国旗计划的前提下,至少需要多少名边防战士才能覆盖全部边境线,从而顺利地完成国旗计划。我们上面说了,如果相等就不执行操作,也就是不跳,所以我们肯定不会到他们的 LCA,而是会很接近,而最接近的地方就是它的子节点了,所以最后再往上跳一个就行了。最后经过很多次循环后,我们成功找到了他们的 LCA,的子节点,为啥呢?原创 2025-02-14 23:40:34 · 939 阅读 · 0 评论 -
寒假学习笔记【匠心制作,图文并茂】——1.17图论复习
主要知识点:并查集、 Dijkstra 、查分约束、同余最短路。原创 2025-02-13 21:06:02 · 982 阅读 · 0 评论
分享