51nod 1554 KMP?????????

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod 1554 KMP?????????相关的知识,希望对你有一定的参考价值。

?????????kmp   code   cin   tar   span   ??????   max   ??????   init   

?????????????????????????????????????????????

??????????????????????????????????????????????????????
1??????????????????KMP????????????????????????????????????????????????????????????????????????ABCDEF???????????????????????????????????????????????????????????????????????????????????????0???????????????????????????????????????????????????????????????????????????????????????????????????????????? ?????????????????????1???????????? ????????????????????????????????????ABCDEFGAB????????????ABCDEFG???????????????????????????AB?????????????????????????????????????????????????????????????????????????????????????????? ???????????????+?????????????????? ?????????????????????

2????????????????????????????????????????????????K????????????????????????????????????????????? K-F[K] ??????????????????????????????1?????????????????????????????????KMP?????????????????????????????????????????????????????????????????????????????????????????????????????????K/(K-F[K])???

3????????????????????????????????????????????????AB???*N+A?????????????????????????????????N?????????

4????????????????????????????????????????????????(A+B)*N????????????????????????????????????A+B+A+B???*N+(A+B)*k?????????????????????????????????????????????????????????????????????????????????

5??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????m?????????????????????????????????????????????M?????????????????????????????????????????? ???  ?????????????????????    ?????????????????????????????????????????????????????????????????? ???????????????????????? ?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????M+1?????????????????????????????????????????????

 

????????????????????????????????????????????????????????????????????????233333333333

 

???AC???????????????

#include<bits/stdc++.h>
using namespace std;

const long long MAXN=1000233;

char tar[MAXN];
long long f[MAXN];

long long n,m;
void init()
{
    cin>>n>>m;
    cin>>tar;
    
    f[1]=0;f[0]=0;
    for(int i=1;i<n;++i)
    {
        int j=f[i];
        while(j&&tar[i]!=tar[j])j=f[j];
        f[i+1]= tar[i]==tar[j]? j+1:0;
    }
}


int main()
{
    cin.sync_with_stdio(false);
    init();
    for(int i=1;i<=n;++i)
    {
        int val=i/(i-f[i]);
        if(i%(i-f[i]))
        {
            if(val/m>val%m)cout<<1;
            else cout<<0;
        }else 
        {
            if(val/m>=val%m)cout<<1;
            else cout<<0;
        }
    }
    
    return 0;
}

 

以上是关于51nod 1554 KMP?????????的主要内容,如果未能解决你的问题,请参考以下文章

51nod 1554:欧姆诺姆和项链——题解

[51nod 1129] 字符串最大值(kmp)

51nod1006simple KMP

hdu6153 A Secret CCPC网络赛 51nod 1277 KMP

51nod 1286 三段子串(树状数组+拓展kmp)

51nod1600 Simple KMP