//字符串下标从1开始,n表示文本串的长度,m表示模式串的长度
int n,m,NEXT[10010];
char s[1000010],p[10010];
void get_next(){
for(int i=2,j=0;i<=m;i++){
while(j && p[i]!=p[j+1]) j=NEXT[j];
if(p[i]==p[j+1]) j++;
NEXT[i]=j;
}
}
void match(){
for(int i=1,j=0;i<=n;i++){
while(j && s[i]!=p[j+1]) j=NEXT[j];
if(s[i]==p[j+1]) j++;
if(j==m){
j=NEXT[j];
//匹配成功之后的操作
}
}
}