基础算法与数据结构
文章平均质量分 94
hhhcbw
Hello World!!!
展开
-
扫描线入门
扫描线入门,面积并,面积交,周长原创 2022-10-06 18:31:20 · 935 阅读 · 0 评论 -
线段树入门+例题详解
线段树入门及例题详解,主要单点修改区间查询,区间修改区间查询。原创 2022-09-20 22:01:09 · 383 阅读 · 0 评论 -
几种组合数的常见处理方式
前言:组合数,大家初中就学过,从n个不同元素里选出m个元素的所有组合的个数,叫做n个不同元素中取出m个元素的组合数。用符号C(n,m) 表示。在数论里,组合数算是非常基础的,也经常使用的一种算法,这篇博客主要是讨论在算法题目中,经常使用的处理组合数的方式。(如有错误,欢迎大家留言指正)方法一:递推公式我们初中就学过,组合数有许多性质,也肯定知道组合数有一个递推公式,即 C(n,m)=C(n-1,m-1)+C(n-1,m),简单解释一下,我们从 n 个物体里选出 m 个物体,那么对于 n 个物体中的其中原创 2020-06-02 18:15:36 · 2149 阅读 · 3 评论 -
字符串Hash入门+例题详解
最近打暑假多校,发现有许多字符串算法自己有所遗忘,今天就借着补题在这开一个坑,把那几个基础的字符串算法总结复习一下,顺便写几个模板,供今后使用。这篇博客主要就是总结一下字符串Hash,并提一下例题。简介我们学习一个算法,肯定要先知道它要解决的是什么问题。字符串Hash,就是解决字符串匹配问题的良药,即寻找长度为 n 的主串 S 中的匹配串 T(长度为 m)出现的位置或次数问题。对于上述问题,朴素的想法是枚举 S 所有起始位置,再直接检查是否匹配,我们可以不使用 O(m) 的直接比较字符串的方法,而.原创 2020-07-17 18:40:55 · 1179 阅读 · 0 评论 -
KMP入门+例题详解
这篇博客继续上篇博客开的坑,把字符串算法里,很重要也很基础的KMP算法总结一下。简介KMP算法主要用来处理字符串匹配问题(单模式串)。即给你两个字符串A,B,问是否B是A的子串。如果使用朴素的算法暴力查找,那么时间复杂度为O(nm),这是我们不能接受的,KMP算法就可以把时间复杂度降到O(n)。实现方法这里有两个字符串,A=“abababaababacb”,B=“ababacb”。我们用两个指针 i 和 j 分别表示,A[i-j+1…i]与B[1…j]完全相等。也就是说,i 是不断增加的,随着 .原创 2020-07-18 18:39:47 · 2135 阅读 · 0 评论 -
Trie字典树入门+例题详解
字符串算法的总结到了Trie字典树这里,个人感觉Trie字典树不难,无论是思想还是代码部分,都是很容易理解的,但是作为AC自动机的前置知识,我们还是要好好学习一下的。简介字典树,也称 Trie 或字母树,指的是某个字符串集合对应的形如下图所示的有根树。树的每条边上恰好对应一个字符,每个顶点代表从根到该结点的路径所对应的字符串(将所有经过的边上的字符按顺序连接起来)。有时我们也称 Trie 上的边为转移,顶点为状态。字符串集合{“AAA” “AAG” “T” “TCA” “TG”}顶点上还能存储.原创 2020-07-20 21:26:39 · 578 阅读 · 0 评论 -
AC自动机入门+例题详解
想当年AC自动机算是我ACM路上的一道坎,长长的代码,不知所云的 fail指针,做题目只有看题解才能过。今天,把AC自动机,重新复习了一遍,发现好多问题都迎刃而解了,这篇博客就总结一下我对AC自动机的认识。前置知识Trie字典树(需要借助Trie来存字符串)KMP(因为fail指针与next数组类似)简介AC自动机也是用来处理字符串匹配的问题的。它与KMP不同在,KMP是处理单模式串匹配问题,而AC自动机是用来处理多模式串的问题。例如,给出 n 个单词,再给出一个字符串 S,问有多少个单词.原创 2020-07-21 17:47:44 · 990 阅读 · 1 评论 -
RMQ问题(ST算法)
RMQ(Range Maximum(Minimum) Query)问题,即询问某个区间内的最大值或最小值,这里主要涉及RMQ问题的求解方法——ST算法。简介ST算法通常用于多次询问一些区间的最值的问题中。我们知道线段树可以O(mlogn)的解决RMQ问题(m是查询次数)。但是如果m很大(一般1e6以上),但是n比较小,就可以用ST算法解决RMQ问题,O(nlogn)预处理+O(1)查询。算法流程1.预处理S...原创 2020-08-30 20:41:58 · 723 阅读 · 0 评论