摘要: \(BCC\)点双连通分量和\(E-BCC\)边双连通分量 概念 定义: ​ 点双连通分量:图 \(G\) 中任意两点 \(u\) 和 \(v\) 具有至少两条不经过同一点的路径(删去任意一个 \(u\) 和 \(v\) 以外的点后,\(u\) 和 \(v\) 依然连通) ​ 割点(割顶):对于一个 阅读全文
posted @ 2025-03-10 22:50 nightmare_lhh 阅读(19) 评论(0) 推荐(0)
摘要: 线段树 概念 线段树是用来解决区间修改,区间查询的问题,它的修改与求和都是\(O(log_2n)\)的,效率非常高。它与前缀和的区别是能够修改数组中的元素。 基本思想 线段树是一颗二叉树,其每一个节点都对应序列的一段区间。如下图所示: graph TB; A[[1 - 8]] B[[1 - 4]] 阅读全文
posted @ 2025-03-10 22:49 nightmare_lhh 阅读(22) 评论(0) 推荐(0)
摘要: \(SCC\)强连通分量与缩点 概念 定义: ​ 强连通:若一个有向图 \(G\) 是强连通的,其含义是有向图 \(G\) 中任意两点 \(u\) 和 \(v\) 均相互可达 ​ 强连通分量:原图 \(G\) 中极大的强连通子图 \(G_{max}\) ,如下图所示 graph LR; 1-->2 阅读全文
posted @ 2025-03-10 22:49 nightmare_lhh 阅读(58) 评论(0) 推荐(0)
摘要: 树状数组 概念 树状数组是用来解决单点修改,区间查询的问题,它的修改与求和都是\(O(log_2n)\)的,效率非常高。它与前缀和的区别是能够修改数组中的元素。 基本思想 根据任意正整数关于\(2\)的不重复次幂的唯一分解性质,若一个正整数\(x\)的二进制表示为\(10101\),则\(x\)能够 阅读全文
posted @ 2025-03-10 22:48 nightmare_lhh 阅读(11) 评论(0) 推荐(0)
摘要: \(AC\)自动机 概念 与\(KMP\)类似,\(AC\)自动机也是用来处理字符串匹配问题的。但\(AC\)自动机处理的是多模式串问题(问在一篇有\(m\)个单词的文章中,有多少个不同的单词在其中出现)。 算法实现 建立\(Trie\) 我们将所有模式串构建出一颗\(Trie\) 匹配 当模式串只 阅读全文
posted @ 2025-03-10 22:48 nightmare_lhh 阅读(14) 评论(0) 推荐(0)
摘要: \(Trie\)字典树 概念 设想一个问题:给定一篇文章 \(T\) 和一系列字符串 \(S_i\),求每一个 \(S_i\) 在 \(T\) 中的出现次数。 显然如果对于每一个 \(S_i\),均与 \(T\) 中与每一个字符串 \(T_i\) 比较,其时间复杂度达到了 \(O(|S|·|T|)\ 阅读全文
posted @ 2025-03-10 22:45 nightmare_lhh 阅读(13) 评论(0) 推荐(0)
摘要: KMP算法 概念 KMP算法是用来解决字符串匹配问题的,与 哈希与哈希表 的第一个例题类似。在这里我们规定:等待匹配的串为主串(母串),用来匹配的串为模式串。 算法实现 KMP算法本质上是通过双指针实现的。我们用两个指针\(i\)和\(j\)表示\(A[i-j+1\cdots i]\)与\(B[1\ 阅读全文
posted @ 2025-03-10 22:44 nightmare_lhh 阅读(46) 评论(0) 推荐(0)
摘要: Hash哈希与哈希表 字符串哈希 概念 哈希算法是通过一个哈希函数H(C),将一种数据(字符串,较大的数等)转化为能够用变量或下标表示的数,这样转化得到的值叫做哈希值。通过哈希值可以实现快速查找与匹配。 例题描述 【Substring Matching】给出两个串\(S1,S2\)(仅有大写字母), 阅读全文
posted @ 2025-03-09 23:17 nightmare_lhh 阅读(48) 评论(0) 推荐(0)