奇怪的RE

P3435 [POI2006] OKR-Periods of Words

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


|