题目大意:求严格/非严格K小子串
首先建立Sam
然后BFS一遍求出每个点代表状态的出现次数
此时如果是严格的那么每个点代表状态的出现次数都应该是1
然后DFS一遍求出每个节点的后继状态个数
然后就随便搞了啊= =
妈了个鸡卡常数。。。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define M 500500
using namespace std;
int type,k;
char s[M],ans[M];int tot;
namespace Suffix_Automaton{
struct Sam{
Sam *son[26],*parent;
int max_dpt,cnt;
long long size;
int v;
void* operator new (size_t,int _)
{
static Sam mempool[M<<1],*C=mempool;
C->max_dpt=_;
return C++;
}
}*root=new (0)Sam,