
C++学习
SmallHedgehog
Make plans,believe in yourself
展开
-
C++学习第九篇——AC自动机
AC自动机,听名字就让人心情愉悦,这个算法能让题目直接自己AC啊!!!言归正传,在上一篇字典树的学习中,我们见识到了树形结构的优势,那么AC自动机就是在字典树上利用KMP的思想,KMP是字符串匹配算法。主要思想是当前匹配点失败后,立刻转移到下一个需要匹配的地方,在这之间省略一些没有必要的检索,有利于降低时间复杂度。字典树的模板参照我之前一篇博客C++学习第八篇——字典树,本专栏c++固定算法为...原创 2020-04-22 11:07:14 · 932 阅读 · 0 评论 -
C++学习第八篇——字典树
学习了之前的树状结构,接下来就可以利用树状结构存储数据了。 首先什么是字典树? 字典树就是利用树的结构按照字典的原理进行存储的数据结构,树的结构我们...原创 2020-04-20 23:22:46 · 538 阅读 · 0 评论 -
C++学习第七篇——树(二叉树)
树结构作为一种数据结构,在算法中有着十分重要的作用。所以本篇的篇幅可能会很长,理论知识很多。树结构是一种数据结构它由结点(node)以及连接结点的边(edge)组成。根是一个树的特殊结点,因为根是唯一一个没有父结点的结点,叶子结点是指没有子节点的结点。如图所示,0结点是整个树的根结点,这里有一个对于树的概念就是,我们通常会将结点的子节点数称为度,从上图来看0,2两个点的度即为3,结点1,3...原创 2020-04-12 13:18:47 · 419 阅读 · 0 评论 -
C++学习第六篇——最短路
最短路是图论最重要的算法之一,也是算法难点。经过这篇的学习,你会发现你离成功就差一个最短路的距离。=.=最短路是指,某个点到某个点之间的距离最短。算法1:Dijkstra算法迪杰斯特拉算法是很典型的单源最短路算法,而且时间复杂度较其他算法更低,唯一的缺点是无法判断含负权边的图的最短路。而且其仅能作为单源最短路,也就是一个起点、一个终点求最短。在开始前推荐大家先去看我的另一篇博客最小生成树其中...原创 2020-04-07 14:21:11 · 1587 阅读 · 0 评论 -
C++学习第五篇——快速幂模板和组合数模板
快速幂模板,仅供参考ll pow_mod(ll a,ll b,ll c)//a^b%c{ ll ans=1; ll base=a%c; while(b) { if(b&1) ans=(ans*base)%c; base=(base*base)%c; b>>=1; } return ans;}很多人可能会对b&1和b>>...原创 2020-04-06 00:29:09 · 411 阅读 · 0 评论 -
C++学习第四篇——最小生成树
最小生成树作为图论的重要算法之一,难度不言而喻,那么只要把握这几种算法,就很容易完成啦。但要区分于单源最短路和多源最短路,最小生成树是没有初始结点的,也就是它只求连通图,可以从任意点开始连。算法1:KruskalKruskal算法本质类似于并查集,将所有点连通至一个集合完成整个图的连接,这里很重要的一点就是并查集的压缩路径,没有压缩过的时间复杂度会变得很高。并查集的压缩路径可以看一下我的另一篇...原创 2020-04-01 16:29:37 · 661 阅读 · 0 评论 -
C++学习第三篇——数据结构
什么是数据结构?数据结构是一种在程序中系统化管理数据集合的形式,是为了优化计算机对数据的处理,另外在构建某些数据结构时需要用到指针和结构体(类)的知识。栈(stack)栈是一种存储临时数据的数据结构,它遵循的规则是(First In Last Out)先进后出。stack的成员函数实例(常用)函数名作用size()返回栈的元素数top()返回栈顶的元素...原创 2020-02-06 23:10:44 · 158 阅读 · 0 评论 -
C++学习第一篇——排序算法
排序算法原创 2020-01-16 16:30:45 · 256 阅读 · 0 评论 -
C++学习第二篇——并查集
并查集模板:(仅供参考模板没有过于详细的讲解)第一步,初始化数组,将数组的值赋值为下标。int arr[1005];void init(){ for(int i=0;i<1005;i++) { arr[i]=i; }}第二步,并查集的主要两个函数Union和find。find函数是通过递归进行调用,找到当前点的老大,也就是集合的顶点,这个点会是这个集合中任意的一个数...原创 2020-02-04 16:31:47 · 360 阅读 · 0 评论