guosoun @ 2022-09-23 20:20:12
救,这个码会奇怪的RE 记录
#include<bits/stdc++.h>
using namespace std;
const int N=2e7+10;
int n,nxt[N];
string s;
int main(){
cin>>n;for(int i=1;i<=n;i++) cin>>s[i];
for(int i=2,j=0;i<=n;i++){
while(j&&s[j+1]!=s[i]) j=nxt[j];
if(s[j+1]==s[i]) j++;
nxt[i]=j;
}
long long ans=0;
for(int i=1;i<=n;i++){
int j=i;
while(nxt[j]) j=nxt[j];
if(nxt[i]) nxt[i]=j;
ans+=i-j;
}
cout<<ans;
}
by bamboo12345 @ 2022-09-23 20:27:08
@2019gzy 哪有这么输入string的啊
by guosoun @ 2022-09-23 20:34:36
@bamboo123 额改了输入就切了,所以这样输入到底有什么问题呀
by Sprague_Garundy @ 2022-09-23 20:47:03
@2019gzy string
初始空间为空,访问不存在的空间会 RE。如果你想这样子输入建议改用 char*
。
by liuyiqi0318 @ 2022-09-23 20:52:29
如果输入string可以用getline(cin,s);
by Sprague_Garundy @ 2022-09-23 20:57:06
@liuyiqi0318 这道题 cin 也可以啊,但是必须直接 cin>>s
。