![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法模板
文章平均质量分 88
光—暗
这个作者很懒,什么都没留下…
展开
-
缩点Tarjan
解释缩点,就是把一张有向有环图中的环缩成一个个点,形成一个有向无环图1.dfn和low的含义tarjan算法有两个核心数组:dfn和low,同样也需要一个栈,辅助存储强连通分量。dfn是“时间戳”,dfn[i]说明i点在什么时间被遍历的。low[i]是i可回溯到的最早时间戳的点的时间戳(见下面对low值的计算),默认值为dfn[i],举个例子:如果i到j有一条路径,j到i也有一条路径,那么就使max(low[i],low[j])=min(low[i],low[j])max(low[i],low[j])原创 2020-09-21 16:30:25 · 1729 阅读 · 0 评论 -
字符串算法——AC自动机讲解
本博客由南昌理工学院ACM集训队赞助播出 教练要求AC自动机文字说明本算法需要先掌握字典树和KMP算法后再来学习如果没学过其中的任意一种,请先去学习再来用我见过的大佬引用:AC自动机简单来说就是Tire Tree + 看毛片 KMP,也就是在树上看毛片 KMPAC自动机用来解决多模式串匹配,也就是给好几个子串,一个很长很长的母串,让你处理一些问题,比如什么子串出现的次数或种类之类的。先用字典树建立树,然后用fail指针将子串串起来,和KMP中的next数组很像,我们定义fail数组,fai原创 2020-08-08 15:53:50 · 283 阅读 · 2 评论 -
c++ 树状数组三种方法
树状数组初识树状数组树状数组用的是树结构的思想(也就是树型逻辑结构),而不是真正的“树形结构”,(换句话说,从某种意义上,树状数组跟树其实没有特别大的关系)树状数组支持的操作:区间和、区间异或和、区间乘积和RMQ(显然,支持的操作都具有交换律)2.单点修改和区间修改。 树状数组的优点:树状数组的维护是(logn)的,并且查询、修改是O(1)。 树状数组被称为树的原因:维护以(logn),而这个log底是2;就是二进制表示法,也就是二叉树上数据之间的特殊逻辑关系。还是不懂的人可以结合下面的图理原创 2020-07-31 00:01:40 · 1599 阅读 · 4 评论