数字kmp.
pure water.
#include <cstdio>
using namespace std;
const int MAXN = 1000005;
const int MAXM = 10005;
int n,m,a[MAXN],b[MAXM],k;
int next[MAXM];
void prekmp()
{
next[0] = -1;
int j = -1;
for(int i=1;i<m;i++)
{
while(j!=-1 && b[j+1]!=b[i]) j = next[j];
if(b[j+1]==b[i]) j++;
next[i] = j;
}
}
int kmp()
{
int j = -1;
for(int i=0;i<n;i++)
{
while(j!=-1 && b[j+1]!=a[i]) j = next[j];
......
阅读全文