算法笔记
文章平均质量分 90
Ldawn_AI
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
最详细适合入门的上下界网络流讲解
看了很多blog,感觉都差一点意思,这篇博客用尽可能详细带有感性和理性双重证明来学习一下上下界网络流, 希望可以有所启发。原创 2025-08-24 12:53:13 · 352 阅读 · 0 评论 -
4+ 图论高级算法
:在有向图 GGG 中,如果两个点 uuu 和 vvv 是互相可达的,即从 uuu 出发可以到达 vvv , 从 vvv 也可以到达 uuu , 则称 uuu 和 vvv 是强连通的。如果 GGG 中任意两个点都是互相可达的,则称 GGG 是强连通图。:如果一个有向图 GGG 不是强连通图,那么可以把它分成多个子图, 其中每个子图的内部是强连通的, 而且这些子图已经扩展到最大,不能与子图外的任意点强连通, 称这样的一个 “极大强连通” 子图是 GGG 的一个强连通分量。SCC(强连通分量) 中的 算法主要原创 2025-08-23 04:09:15 · 923 阅读 · 0 评论 -
深入解析AC自动机(含Kmp和Trie树)
Trie, 又叫字典树或前缀树,用来储存和查询字符串。那Trie树是怎么储存字符串的呢?acdachsfaeadsbf,Trie树将以下的形式来储存字符串:比如我们走1 -> 2 -> 4,存储的就是字符串acd。给定一个长度为n的文本S,以及k个平均长度为m的模式串P1, P2, P3...Pk,要求搜索这些模式串出现的位置。没错,这就是著名的多模匹配问题,如果我们直接用kmp来进行每次查询的话,则时间复杂度高达O(k * (n + m)), 当k足够大时绝对会超时,那么怎么办呢?原创 2024-08-17 15:44:46 · 971 阅读 · 0 评论 -
带你手撕哈希(hash)表【数组】
假如我们要映射到1e5,这时我们需要开一个比这个数据范围更大一点约为2到3倍的数组,然后通过y = x % mod,找到y,看看y这个坑位里面有没有人,没人我就蹲,有人我就找下一个。h函数存的值为前几个字母所映射的哈希值,而怎么把字符串转化为哈希值呢,我们这里采用一个奇妙的办法——进制。,比如我们设较大范围的数据为x,较小范围的数据为y,常用的函数为 y = x % mod。哈希的本质是映射,把一个较大范围的数据映射到一个较小的数据里面,从而。我们把一个很大范围的数据映射到一个较小范围的数据中,则。原创 2024-03-24 10:53:25 · 1998 阅读 · 1 评论 -
带你手撕堆【数组】
删除时就有讲究了,删除栈顶的元素,可能你会想到队列删除队头的方式,但其实是不对的,因为整个堆的二叉树结构需要他的下标来维护,所以不能用队列删除队头的方式。1.大根堆(又称最大堆) : 堆中的每一个父结点都大于等于其子节点的值,即头结点为该堆的最大值。2.小根堆(又称最小堆): 堆中的每一个父节点都小于等于其子节点,即头节点为该堆的最小值。这是常见的堆的五种操作(下面两种操作用STL无法实现),接下来让我们用数组来实现吧!由图可知,建堆的时间复杂度为O(n),堆排序的时间复杂度为O(n log n)。原创 2023-12-30 00:48:11 · 1171 阅读 · 1 评论 -
带你手撕栈和队列【数组】
为什么把栈和队列放在一块讲呢?因为我认为这两种数据结构的代码实现和代码思想基本上可以说是一模一样的。这两中数据结构算是比较简单的,但用途却是很广泛的,非常重要。原创 2023-12-22 20:29:22 · 954 阅读 · 0 评论 -
带你手撕静态链表【数组】
众所周知,其实在企业做项目中,对于链表的使用,更多是偏向于用结构体和指针的动态链表,那为什么在算法竞赛中我们还要学会用数组来模拟链表呢,因为用结构体和指针的话,在oj题时会很慢,很容易TLE,相比之下数组的静态链表就快多了。原创 2023-11-24 19:52:07 · 604 阅读 · 0 评论
分享