[JSOI2007]文本生成器

2021-02-15 21:21

阅读:325

标签:main   直接   while   name   转移   ble   https   传送门   ++   

传送门

Analysis

AC自动机+dp
直接从正面做
\(f[i][j][0/1]\)表示在节点\(i\),串长为\(j\),是否已经经过结尾点的总方案数,然后从父亲向儿子转移
\(dp\)的时候不用跳\(fail\),在构建\(fail\)指针的时候顺带把对于结尾点的标记通过\(fail\)指针扩展到它在\(fail\)树上的祖先(不知道这样理解对不对)

ps:大写看成小写调了1h……

放代码

#include
using namespace std;
const int N = 10000 + 10;
const int mod = 10007;
char s[N];
int n, m, ch[N][30], lst[N], fail[N], val[N], f[N][105][2], sz = 1, ans;
void insert(char *s) {
	int u = 0; int n = strlen(s);
	for (register int i = 0; i  q;
	int u = 0; fail[0] = 0;
	for (register int i = 0; i > n >> m;
	for (register int i = 1; i 

[JSOI2007]文本生成器

标签:main   直接   while   name   转移   ble   https   传送门   ++   

原文地址:https://www.cnblogs.com/kma093/p/12981296.html


评论


亲,登录后才可以留言!