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?????????的主要内容,如果未能解决你的问题,请参考以下文章