点个关注吧
2025-07-12 18:06:07
发布于:广东
13阅读
0回复
0点赞
#include <iostream>
#include <vector>
using namespace std;
int main(){
freopen("game.in","r",stdin);
freopen("game.out","w",stdout);
int n;
string s;
cin >> n >> s;
s="?"+s;
vector<int> v1(n+1,0),v2(n+1,0);
long long ans=0;
for (int i=1;i<=n;++i){
int j=i;
while (j && s[j-1]!=s[i]){
j=v1[j-1];
}
if (j){
v1[i]=j-1;
}
if (v1[i]){
v2[i]=v2[v1[i]-1]+1;
}
ans+=v2[i];
}
cout<<ans<<endl;
fclose(stdin);
fclose(stdout);
return 0;
}
这里空空如也
有帮助,赞一个