题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1009 题意: 准考证号为\(n\)位数\(X_1X_2....X_n(0<=X_i<=9)\),你不希望准考证号上出现不吉利的数字. 不吉利数字\(A_1A_2...A_m(0<=A_i<=9)\)有\(m\)位,不出现是指\(X_1X_2...X_n\) 中没有恰好一段等于\(A_1A_2...A_m\).\(A_1\) 和 \(X_1\) 都可以为\(0\). 问你…
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=2553 题解: 利用AC自动机的dp求出所有的转移 然后将所有的转移储存到矩阵中,进行矩阵乘法即可 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long ll; inline void read(int &x){ x…
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1009 题意:给定一个长度为m的串s.有多少种长度为n的串不包含s? 思路:(1)将s插入trie建立ac自动机.(2)以自动机中的状态作为节点,建立矩阵A[i][j],A[i][j]=1表示j节点为合法状态,也就是能向j转移.(3)计算ans=A^n,则ans=sum(ans[0][i]). struct node{    int next[10],fail,flag;     voi…
POJ2778 题意:只有四种字符的字符串(A, C, T and G),有M中字符串不能出现,为长度为n的字符串可以有多少种. 题解:在字符串上有L中状态,所以就有L*A(字符个数)中状态转移.这里自动机的build的hdu2222略有不同. 那一题中通过询问时循环来求she的he,但是如果he不能出现,she就算不是禁止的字符串也不可出现,所以在build的时候就记录所有不能出现的状态. if (end[ fail[now] ]) end[now]++; 然后用一个矩阵F来记录可以相互到达的…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2553 看了题解才会…… 首先,给定一个串,最好的划分方式是按禁忌串出现的右端点排序,遇到能填的就填上.在 AC 自动机上就是一旦能走到一个禁忌串的终止节点,就 ans++ 并走到根去. 考虑怎么把 ans++ 也体现在矩阵乘法里.而且还要期望…… 只要在矩阵里填上概率,最后就能算出期望了.体现 ans++ 的话,就是在 “从当前节点到根” 的同时给 “从当前节点到 tot ” 的概率也加上…
https://www.lydsy.com/JudgeOnline/problem.php?id=1009 阿申准备报名参加GT考试,准考证号为N位数X1X2....Xn(0<=Xi<=9),他不希望准考证号上出现不吉利的数字.他的不吉利数学A1A2...Am(0<=Ai<=9)有M位,不出现是指X1X2...Xn中没有恰好一段等于A1A2...Am. A1和X1可以为0 在构造好的next图上跑矩阵快速幂即可 /**********************************…
建AC自动机后, dp(x, y, s)表示当前长度为x, 在结点y, 包括的串的状态为s的方案数, 转移就在自动机上走就行了. 对于输出方案, 必定是由给出的串组成(因为<=42), 所以直接暴搜答案. 数据范围很小, 可以AC(复杂度懒得算了....) ------------------------------------------------------------------------------------------------ #include<cstdio> #in…
题目大意:略 裸的AC自动机+数位DP吧... 定义f[i][x][0/1]表示已经匹配到了第i位,当前位置是x,0表示没到上限,1到上限,此时数是数量 然而会出现虚拟前导零,即前几位没有数字的情况,实际上是在0号节点原地打转,所以多加一维状态,再额外讨论第1位就行了 #include <cmath> #include <queue> #include <vector> #include <cstdio> #include <cstring> #…
首先是描述个大概.不说一些特殊的DP 或者借用矩阵来状态转移 (这些本质都是一样的). 只讲AC自动机和DP的关系(个人理解). AC自动机 又可以叫做状态机. 我一开始的认为.AC 自动机提供了一些节点的信息.以及那些节点之间的关系.(节点也就是我们创建的 Trie图的节点.往往我们会有一维这个信息). 然后我们做DP的时候.就好像是 “顺着” AC自动机指导给我们的方向.然后做状态转移等等.这是一种感性的认识.     现在我认为.AC自动机本身就是一个大状态.同时父亲和孩子的关系给了我们D…
题意: 给出一n种字符的字典,有p个禁用的单词, 问能组成多少个不同的长度为m的合法字符串.(m<=50) 题解: 是不是个我们之前做的题目非常非常像,题意都一样. 直接将上次写的AC自动机+矩阵快速幂的代码交上去. 然后突然发现没有取模,好像直接炸了.即便只有50,但是方案数还是爆__int128了 处理不了,这题还是必须用大数的. p<=10 我们可以考虑状压实现. 这题还是和之前的题目有点关系的,需要求出可达矩阵,然后根据这个去DP dp[i][j] 表示第 i 步 在AC自动机 j 这…