矩阵乘法
Daniel__d
这个作者很懒,什么都没留下…
展开
-
HDU2243-AC自动机+矩阵快速幂
HDU2243 题目描述 长度不超过LLL,只由小写字母组成的,至少包含一个词根的单词,一共可能有多少个呢?这里就不考虑单词是否有实际意义。 题解 先考虑直接dp转移,但是考虑到nnn的大小,显然会T掉。 考虑矩阵乘法,ans=总方案数−不含词根的单词ans=总方案数-不含词根的单词ans=总方案数−不含词根的单词; 首先前半部分是一个幂和的形式: An=261+...+26nSn=An+1=260+261+...+26nSn+1=26Sn+1 A_n=26^1+...+26^n\\ S_n=A_n+1=2原创 2020-08-04 21:15:12 · 253 阅读 · 1 评论 -
POJ2778-AC自动机,矩阵快速幂优化DP
POJ2778 题目描述 简要题意:给出mmm个病毒串,问你由ATGCATGCATGC构成的长度为 nnn 且不包含这些病毒串的字符串有多少个? 题解 定义dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数dp[i][j]=dp[当前长度为i][当前在AC自动机的第j个节点]=方案数. 转移方程也十分简单. 但是注意到nnn的大小,显然会T到飞起,考虑矩阵乘法优化,其实再转化一下题意就是:全图中的000原创 2020-07-30 13:47:32 · 207 阅读 · 0 评论 -
P1962-矩阵快速幂板子
#include<bits/stdc++.h> #define int long long using namespace std; int read(){ int f=1,re=0;char ch; for(ch=getchar();!isdigit(ch)&&ch!='-';ch=getchar()); if(ch=='-'){f=-1,ch=getchar();} for(;isdigit(ch);ch=getchar()) re=(re<<3)+(re原创 2020-07-25 21:38:32 · 138 阅读 · 0 评论