
算法
文章平均质量分 78
fffalling
这个作者很懒,什么都没留下…
展开
-
Tarjan算法
Tarjan 算法就是求强连通分量的算法 下面介绍几个定义 强连通图:任意两个定点之间相互可达 强连通分量:非强连通图有向图的极大强连通子图 在Tarjan算法中为每个节点i维护了以下几个变量: DFN[i]:深度优先搜索遍历时节点i被搜索的次序。 low[i]:节点i能够回溯到的最早位于栈中的节点。 flag[i]:标记i是否在栈中。 这个算法大致过程就是 对于每个节点每条边都要原创 2018-01-24 19:40:19 · 398 阅读 · 0 评论 -
KMP算法详解(next数组详解)
KMP算法的关键是它的next数组,利用next数组能够高效地确定在当前失配的情况下,应当将模式串移动多少位才能够避免不必要的匹配。 我们要计算一个长度为m的转移函数next。 next数组的含义就是一个固定字符串的最长前缀和最长后缀相同的长度。 所以当不匹配时,我们直接令当前子串的下标j=next[j]即可,省去了不必要的匹配 比如 对于目标字符串ptr,ababaca,长度是7,所以...原创 2018-04-23 17:57:23 · 4510 阅读 · 0 评论 -
KMP模板
#include<bits/stdc++.h> using namespace std; #define ll long long #define pb push_back #define inf 200000099999999 #define mod 998244353 #define rep(i,a,b) for(int i=a;i<=b;i++) #define rep1...原创 2018-08-04 08:53:14 · 120 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2) B. Circus(思维)
B. Circus time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Polycarp is a head of a circus troupe. There are n — an even number — artists in the ...原创 2019-03-17 12:41:05 · 118 阅读 · 0 评论 -
求无向图的割边(targin)
如果不了解targin算法的可以先到这里学习一下 那么如果求割边呢 我们知道有两个数组low和dfn分别为 DFN[i]:深度优先搜索遍历时节点i被搜索的次序。 low[i]:节点i能够回溯到的最早位于栈中的节点。 那么如果我们搜索的时候发现当前节点u的dfn值小于其子节点v的low值,即low[v]&gt;dfn[u](注意,这里不能是low[v]&gt;low[u],因为父节点的low值有可能...原创 2019-03-17 12:40:50 · 1382 阅读 · 1 评论