- 博客(5)
- 收藏
- 关注
原创 kmp2
kmp:如何求字符串的匹配?题目:洛谷3375给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。首先,先求出s2的nxt如果我们已经知道s1的1~i-1位能够匹配到的s2中的最大长度为j,即s1【i--1-j+1、、、j】=s2【1........j】这时,只要枚举j的所有border——jj, 看其下一位即s2【jj+1】是否等于s1
2017-12-28 22:16:32
324
原创 浅谈kmp
kmp算法是用于求字符串匹配的算法,即求字符串s1在s2中的出现位置先介绍几个概念border:对于一个字符串s【siz】,存在i使s【1.。。i】===s【siz-i+1.。。。。i】,那么该字符串存在一个border:s【1、、i】eg:对于abdabd,其border为abd对于abdab ,其border为ab对于abdabdabd 其border为abd和abdab
2017-12-27 22:08:29
298
原创 tarjan缩点
基本方法和裸tarjan差不多在弹出的时候记录节点祖先在处理完后搜索每个节点及其相连的节点,若两点的祖先不同,则入度++poj2186 popular cow入度为1的分量连边:n+1/2;代码#include#include#include#includeusing namespace std;int dfn[10001],low[10001],a,b,c,top,
2017-12-24 22:20:55
935
原创 tarjan算法
tarjan算法是一种求强联通分量的算法,通过访问节点遍历。有几个比较重要的知识:强联通分量:如果一个集合中的所有的节点都可以互相到达,那么这个集合就是一个强联通分量。dfn【i】:记录节点i第几个被访问。low【i】:记录节点i可以追溯到的最早的祖先zh【i】:栈中第i个元素vis【i】:记录i是否在栈中首先,寻找没有更新过dfn的节点开始tarjan:1、更新dfn
2017-12-24 21:41:57
217
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人