欢迎使用本站,预祝练习时长两年半的选手们到成功! [本模块信息来自tem/def/head]

1468:OKR-Periods of Words

时间:2024-06-15 22:39 作者:admin 点击:
#include bits/stdc++.husing namespace std;int n,j,ne[1000101];long long sum;string s;void get_next(){ for(int i=1;in;i++) { while (js[i]!=s[j]){ j=ne[j];} if(s[i]==s[j]){ j++;} ne[i+1]=j; }}int main(){ cinns; j=0; get_next(); for(int i=1;i=
#include <bits/stdc++.h>
using namespace std;
int n,j,ne[1000101];
long long sum;
string s;
void get_next(){
    for(int i=1;i<n;i++) {
        while (j&&s[i]!=s[j]){
        	j=ne[j];
		}
        if(s[i]==s[j]){
        	j++;
		}
        ne[i+1]=j;
    }	
}
int main(){
    cin>>n>>s;
    j=0;
    get_next();
    for(int i=1;i<=n;i++){
        j=i;
        while(j&&ne[j]){
        	j=ne[j];
		}
        if(ne[i]){
        	ne[i]=j;	
		}
        sum+=i-j;
    }
    cout<<sum;
    return 0;
}


(责任编辑:admin)
    顶一下
    (0)
    0%
    踩一下
    (0)
    0%