摘要:
在一个Text串中找出Pattern串E以满足EAEBE,A B可以是任意串 看一眼觉得woc好难,后来看一下样例AB为空也可以 找观察一下E既是前缀也是后缀,很容易联想到next 最优情况EEE,那就是3 × next[j] == j A,B任取,那只要进一步保证 3 × next[j] 0&&P 阅读全文
posted @ 2018-02-09 21:30
Caturra
阅读(129)
评论(0)
推荐(0)
摘要:
https://www.cnblogs.com/chenxiwenruo/p/3546457.html 阅读全文
posted @ 2018-02-09 19:15
Caturra
阅读(142)
评论(0)
推荐(0)
摘要:
只要KMP里对f[i]进行限制即可 阅读全文
posted @ 2018-02-09 18:38
Caturra
阅读(145)
评论(0)
推荐(0)
摘要:
```C++
/*H E A D*/
int nxt[maxn];
char P[maxn];
void buildNext(){ nxt[1]=0; int j=0,m=strlen(P+1); rep(i,2,m){ while(j&&P[i]!=P[j+1])j=nxt[j]; if(P[i]==P[j+1])j++; nxt[i]=j; } }
int main(){... 阅读全文
posted @ 2018-02-09 17:25
Caturra
阅读(95)
评论(0)
推荐(0)
摘要:
如果循环节存在那在前缀部分也肯定存在 如果循环节存在那至少是可以匹配的 而next是维护最大前缀的,意会意会 注意一定要先判整除,即使别的题目保证是存在循环的 特意画了一张灵魂草图帮助理解 阅读全文
posted @ 2018-02-09 17:09
Caturra
阅读(168)
评论(0)
推荐(0)
摘要:
题目的匹配应该也要看成一个文本串与另一个模式串的匹配过程 Text是以当前i结尾的后缀来匹配Pattern的前缀(非真) 这里的Pattern肯定是可以匹配成功的,直接由next来保证(next总是当前结尾的最大前缀,恰好满足递推的需要) (说的不是很准确,就是kmp匹配过程时使用的方法) 举个栗子 阅读全文
posted @ 2018-02-09 15:46
Caturra
阅读(116)
评论(0)
推荐(0)
摘要:
循环移位的套路操作就是一份折开变两份 C++ / H E A D / void match(){ int n=strlen(T+1); int m=strlen(P+1); int j=0; rep(i,1,n){ if(flag)break; while(j 0&&(j==m||T[i]!=P[j 阅读全文
posted @ 2018-02-09 01:52
Caturra
阅读(138)
评论(0)
推荐(0)
摘要:
```C++
/*H E A D*/
int nxt[maxn],f[maxn],ans;
char T[maxn],P[maxn];
void init(){ int m=strlen(P+1); int j=0; nxt[1]=0; rep(i,2,m){ while(j>0&&P[i]!=P[j+1]) j=nxt[j]; if(P[i]==P[j+1])j++; nxt... 阅读全文
posted @ 2018-02-09 01:31
Caturra
阅读(109)
评论(0)
推荐(0)

浙公网安备 33010602011771号