萌新求助 KMP 板子 qaq
查看原帖
萌新求助 KMP 板子 qaq
820837
__3E24AC7002AD9292__楼主2024/8/30 20:12
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define fr first
#define sc second
int read(){
	int res=0,f=1;char c=getchar();
	while (c<'0'||c>'9') {if (c=='-') f=-1;c=getchar();}
	while (c>='0'&&c<='9') {res=res*10+(c-'0');c=getchar();}
	return res*f;
}
const int N=1e6+5;
string a,b;
int nxt[N];
signed main(){
	cin>>a>>b,a=' '+a,b=' '+b;
	for (int i=2;i<b.size();i++){
		int j=nxt[i-1]+1;
		while (j&&b[i]!=b[j]) j=nxt[j];
		nxt[i]=j;
	}
	for (int i=1,j=1;i<a.size();i++){
		if (a[i]==b[j]) j++;
		else j=nxt[j];
		if (j==b.size()){
			cout<<i-b.size()+2<<'\n';
			j=nxt[j-1]+1;
		}
	}
	for (int i=1;i<b.size();i++)
		cout<<nxt[i]<<' ';
	return 0;
}

https://www.luogu.com.cn/record/175416592

0 分…… :c

2024/8/30 20:12
加载中...