<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="https://wiki.cvbbacm.com/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="https://wiki.cvbbacm.com/feed.php">
        <title>CVBB ACM Team 2020-2021:teams:farmer_john:2sozx:字符串</title>
        <description></description>
        <link>https://wiki.cvbbacm.com/</link>
        <image rdf:resource="https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico" />
       <dc:date>2026-04-30T05:19:35+0800</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:%E6%89%A9%E5%B1%95kmp&amp;rev=1590217659&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:kmp&amp;rev=1590114360&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:manacher&amp;rev=1590115207&amp;do=diff"/>
                <rdf:li rdf:resource="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:shift_and&amp;rev=1588922498&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico">
        <title>CVBB ACM Team</title>
        <link>https://wiki.cvbbacm.com/</link>
        <url>https://wiki.cvbbacm.com/lib/exe/fetch.php?media=favicon.ico</url>
    </image>
    <item rdf:about="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:%E6%89%A9%E5%B1%95kmp&amp;rev=1590217659&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-23T15:07:39+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2020-2021:teams:farmer_john:2sozx:字符串:扩展kmp</title>
        <link>https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:%E6%89%A9%E5%B1%95kmp&amp;rev=1590217659&amp;do=diff</link>
        <description>扩展kmp

简介

定义母串 $S$，和字串 $T$，设 $S$ 的长度为 $n，T$ 的长度为 $m$ ，求 $T$ 与 $S$ 的每一个后缀的最长公共前缀，也就是说，设 $extend$ 数组, $extend[i]$ 表示 $T$ 与 $S[i,n-1]$ 的最长公共前缀，要求出所有 $extend[i](1\le i\le n)$。

代码


l1=strlen(a+1),l2=strlen(b+1);
nxt[1]=l2;
i=1;
while(b[i]==b[i+1]&amp;&amp;i+1&lt;=l2) i++;
nxt[2]=i-1;
pos=2;
for(i=3;i&lt;=l2;i++){
	if(pos+nxt[pos]&gt;=i) nxt[i]=min(nxt[i-pos+1],pos+nxt[pos]-i);
	while(b[nxt[i]+1]==b[nxt[i]+i]) nxt[i]++;
	if(nxt[i]+i&gt;pos+nxt[pos]) pos=i; 
}
pos=1;
int l=min(l1,l2);
for(i=1;i&lt;=l;i++) {
	if(a[i]!=b[i]…</description>
    </item>
    <item rdf:about="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:kmp&amp;rev=1590114360&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-22T10:26:00+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2020-2021:teams:farmer_john:2sozx:字符串:kmp</title>
        <link>https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:kmp&amp;rev=1590114360&amp;do=diff</link>
        <description>KMP

简介

本质上是 $nxt$ 数组，$nxt[j]=k$ 表示 $j$ 之前的字符串中有最大长度为 $k$ 的相同前缀后缀。

代码


nxt[1]=0;
for(i=2;i&lt;=n;i++){
	while(j&amp;&amp;ch[j+1]!=ch[i]) j=nxt[j];
	if(ch[j+1]==ch[i]) j++;
	nxt[i]=j;
}</description>
    </item>
    <item rdf:about="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:manacher&amp;rev=1590115207&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-22T10:40:07+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2020-2021:teams:farmer_john:2sozx:字符串:manacher</title>
        <link>https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:manacher&amp;rev=1590115207&amp;do=diff</link>
        <description>Manacher

代码


pat[0]='@';
for(i=1;i&lt;=n;i++) pat[2*i-1]=ch[i],pat[2*i]='@';
pos=0,r[0]=0;
for(i=1;i&lt;=2*n;i++){
	if(i&lt;=pos+r[pos]) r[i]=min(pos+r[pos]-i,r[pos*2-i]);
	while(i&gt;r[i]&amp;&amp;pat[i+r[i]+1]==pat[i-r[i]-1]) r[i]++;
	if(i+r[i]&gt;pos+r[pos]) pos=i;
}</description>
    </item>
    <item rdf:about="https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:shift_and&amp;rev=1588922498&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2020-05-08T15:21:38+0800</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>2020-2021:teams:farmer_john:2sozx:字符串:shift_and</title>
        <link>https://wiki.cvbbacm.com/doku.php?id=2020-2021:teams:farmer_john:2sozx:%E5%AD%97%E7%AC%A6%E4%B8%B2:shift_and&amp;rev=1588922498&amp;do=diff</link>
        <description>Shift-and

	*  挺好的讲解
	*  还不太熟悉</description>
    </item>
</rdf:RDF>
