分析:
不算太难的fail指针应用题。每次利用fail指针在上一个位置的匹配信息,不停地向下匹配,如果超过一半则退回去即可。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<vector>
#include<map>
#define SF scanf
#define PF printf
#define MAXN 1000010
#define MOD 1000000007
using namespace std;
typedef long long ll;
int n;
char s[MAXN];
int fail[MAXN],dep[MAXN];
ll ans;
void