Rt,只过了 Subtask0 和 Subtask2 的 #11,其他全部 WA 了,求大佬帮忙调一调
//Luogu P3375
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string s,t;
int nxt[1000005];
int main()
{
cin>>s>>t;
for(int i=1;i<(int)t.length();i++)
{
int now=nxt[i-1];
while(t[now]!=t[i]&&now!=0) now=nxt[now-1];
if(t[now]==t[i]) nxt[i]=nxt[now]+1;
else nxt[i]=0;
}
for(int pos=0,now=0;now<(int)s.length();)
{
if(s[now]==t[pos]) now++,pos++;
else if(nxt[pos-1]!=0) pos=nxt[pos-1];
else now++;
if(pos==(int)t.length())
{
printf("%d\n",now-pos+1);
pos=nxt[pos-1];
}
}
for(int i=0;i<(int)t.length();i++) printf("%d ",nxt[i]);
return 0;
}
附:我学习 KMP 看的文章:https://www.ruanx.net/kmp/