题目
思路
暴力+hash乱搞
code:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<string>
#include<cmath>
using namespace std;
long long n,ans;
long long u[3001*3001];
string a,b;
long long t;
int main()
{
cin>>n>>a>>b;
if (a==b)
{
int i;
for (i=1;i<n;i++)
{
if (a[i]!=a[i-1]) break;
}
if (i==n)
{
cout<<n;
return 0;
}
}
int i,J,r;
for (i=0;i<n;i++)
{
t=0;
r=0;
for (J=i;J<n;J++)
{
while (r!=n&&a[r]!=b[J]) r++;
if (r==n) break;
r++;
t=(t*31971+b[J]-'a'+2)%2005091020050911;
u[++u[0]]=t;
}
}
sort(u+1,u+u[0]+1);
cout<<unique(u+1,u+u[0]+1)-u-1;
return 0;
}