随笔分类 -  字符串--AC自动机

摘要:题面 "Bzoj" Sol $AC$自动机上$DP$ 总数$ $不合法 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typ 阅读全文
posted @ 2018-02-10 14:28 Cyhlnj 阅读(127) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 建出AC自动机后DFS能走的点,如果能走回来就可行 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; 阅读全文
posted @ 2018-01-22 22:32 Cyhlnj 阅读(118) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol AC自动机+栈,每次匹配到栈顶减去这个单词的长度,回到之前的状态 最后栈中留下的就是答案 cpp include define IL inline define RG register define Fill(a, b) memset(a, b, sizeof(a)) us 阅读全文
posted @ 2018-01-22 19:04 Cyhlnj 阅读(206) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 首先有个很显然的暴力,构建AC自动机 每次询问$x, y$就$y$暴跳$trie中的父亲$,$跳fail$检查是否有$x$的结尾 cpp include define RG register define IL inline define Fill(a, b) memset 阅读全文
posted @ 2018-01-21 20:09 Cyhlnj 阅读(147) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 在AC自动机上跑数位DP 设$f[i][j][0/1]$表示到$n的第i位$当前匹配到$AC自动机的j节点$的方案 转移就在AC自动机上跑 注意不能有前导零,可能有这种情况$000000$不能存在那么前导零就有问题 所以要单独把小于$n$的位数的数单独算出来,等于$n$的位 阅读全文
posted @ 2018-01-20 15:10 Cyhlnj 阅读(135) 评论(0) 推荐(0)
摘要:题面 "传送门" Sol 先建立AC自动机,trie树上每个字符串结束的位置记录下它的长度$len$ 设$f[i]$表示前$i$个字符是否被翻译 在AC自动机上匹配,跳$fail$转移,该点为$x$,则$f[i]$由$f[i len[x]]$转移而来 ~~太菜了不会trie的暴力~~ cpp inc 阅读全文
posted @ 2018-01-19 14:41 Cyhlnj 阅读(126) 评论(0) 推荐(0)
摘要:Sol AC自动机模板题 cpp include define RG register define IL inline define Fill(a, b) memset(a, b, sizeof(a)) using namespace std; typedef long long ll; cons 阅读全文
posted @ 2018-01-09 15:49 Cyhlnj 阅读(115) 评论(0) 推荐(0)
摘要:AC自动机建立fail树后树上DP # include <stdio.h> # include <stdlib.h> # include <iostream> # include <string.h> # include <algorithm> # include <queue> # define 阅读全文
posted @ 2017-12-12 19:27 Cyhlnj 阅读(198) 评论(0) 推荐(0)