算法
文章平均质量分 55
Stupid-dog
信息学学子
展开
-
快速幂
原理编辑 以下以求a的b次方来介绍[1] 把b转换成二进制数。 该二进制数第i位的权为 例如 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 因此,我们将a¹¹转化为算 实现编辑 快速幂可以用位运算这个强大的工具实现 1 b and 1{也就是取b的二进制最低位(即第0位) 判断b是否为奇数,是则为原创 2017-01-20 21:38:17 · 290 阅读 · 0 评论 -
tarjan算法
算法介绍 如果两个顶点可以相互通达,则称两个顶点强连通(strongly connected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(strongly connected components)。 下图中,子图{1,2,3,4}为一个强连通分量,因为顶点1,2,3,4两两可达。{5},{6}也分别是两个强连通分量。 Tarjan算法是用来原创 2017-01-21 21:30:38 · 1006 阅读 · 1 评论 -
spfa优化
SPFA对于稀疏图非常的有用,然而对于稠密图就是辣鸡。。(还是很厉害的)。 稠密图可以使用dij,但是SPFA真的败给了稠密图了吗? 答案是不是的,优化强着呢,杠杠滴~ 优化一:SLF 怎么做呢? 假设我们当前在跑SPFA的最短路(下面都是)。 设我们的队头为i,要加进去队列的数为j,那么我们就可以根据最短路,加出如下优化 若dis[j]小于dis[i],那么j加进队列的开转载 2017-08-18 20:49:26 · 430 阅读 · 1 评论 -
匈牙利算法
先给个概念:匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中充分性证明的思想,它是二部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。像我这种图论学得不好的人,一看定义就懵了,但是我们可以尝试换一个方式来理解,也就是别人说的找妹子算法 然后呢,这个图不太好啊,但是我画画水平也就这样了,这是初始的状态,然后原创 2017-08-18 21:52:48 · 748 阅读 · 0 评论 -
manacher算法(马拉车)
这种算法通常用来解决一个字符串中的最长的回文串的长度是多少,嗯哼,然后时间复杂度为O(n),不过使用的范围很有局限性,但还是有用的。(重点在于短小快捷) 定义一些东西 r[i]表示以i为回文中心的最大回文半径 举个栗子: a b a b a 回文半径 :1 1 2 1 1 我觉得挺清楚的。 mx :表示找到的回文串的最右边界 p:表...原创 2018-06-29 20:33:57 · 362 阅读 · 0 评论 -
kmp算法
这个算法通常用来解决B是否是A的子串,也比较有局限性。 看了一晚上解释我终于明白了。 很短,很好写,很好理解。 定义一些东西 A:一个串 B:另一个串 j:a[i-j+1…..i]=b[1…j] 随着i的变化而变化,但与i的取值无关 P[j]:b[1…p[j]]=b[j-p[j]+1…..j],有没有发现与上面非常相似。 先列个数据(实在找不到好的...原创 2018-07-09 21:55:25 · 193 阅读 · 0 评论 -
AC自动机(字符串多模匹配)
非常经典的一个关于字符串匹配的算法 前置技能是:kmp和trie 重难点是fail指针(其实挺简单的) 待建设原创 2018-07-19 22:24:23 · 927 阅读 · 0 评论