求长度为m的,至少包含一个模式串的文本串个数。
我们考虑用所有的个数26m26^m减去一个模式串也不包含的个数。
后者我们可以建出ACAM,然后在ACAM上跑dp即可。

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
using namespace std;
#define ll long long
#define N 70
#define inf 0x3f3f3f3f
#define mod 10007
inline int read(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=x*10+ch-'0',ch=getchar();return x*f;
}
int n,m,son[N*100][26],f[110][N*100],rt,owo=0,fail[N*100],ans=0;
bool end[N*100];//f[i][j]表示第i个字符匹配到自动机上的第j个节点且不含任何模式串的方案数
char s[110];
inline void ins(char *s){int len=strlen(s+1),p=rt;for(int i=1;i<=len;++i){int &y=son[p][s[i]-'A'];if(!y) y=++owo;p=y;}end[p]=1;
}
inline void buildAC(){queue<int>q;q.push(rt);while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<26;++i){int &y=son[x][i];if(!y){y=son[fail[x]][i];continue;}q.push(y);fail[y]=son[fail[x]][i];end[y]|=end[fail[y]];}}
}
inline int ksm(int x,int k){int res=1;for(;k;k>>=1,x=x*x%mod) if(k&1) res=res*x%mod;return res;
}
int main(){
//  freopen("a.in","r",stdin);n=read();m=read();rt=++owo;for(int i=0;i<26;++i) son[0][i]=rt;f[0][1]=1;for(int i=1;i<=n;++i) scanf("%s",s+1),ins(s);buildAC();for(int i=0;i<m;++i)for(int j=1;j<=owo;++j){if(end[j]||!f[i][j]) continue;for(int k=0;k<26;++k){f[i+1][son[j][k]]+=f[i][j];f[i+1][son[j][k]]%=mod;}}for(int i=1;i<=owo;++i)if(!end[i]) ans=(ans+f[m][i])%mod;ans=ksm(26,m)-ans;if(ans<0) ans+=mod;printf("%d\n",ans);return 0;
}

bzoj1030 [JSOI2007] 文本生成器(ACAM+dp)相关推荐

  1. [BZOJ1030] [JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Description JSOI交给队员ZYX一个任务,编制一个称之为&qu ...

  2. [BZOJ1030][JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5025  Solved: 2080 [Submit][St ...

  3. [BZOJ1030]:[JSOI2007]文本生成器(AC自动机+DP)

    题目传送门 题目描述: JSOI交给队员ZYX一个任务,编制一个称之为"文本生成器"的电脑软件:该软件的使用者是一些低幼人群, 他们现在使用的是GW文本生成器v6版.该软件可以随机 ...

  4. [BZOJ1030] [JSOI2007] 文本生成器 (AC自动机 dp)

    Description JSOI交给队员ZYX一个任务,编制一个称之为"文本生成器"的电脑软件:该软件的使用者是一些低幼人群, 他们现在使用的是GW文本生成器v6版.该软件可以随机 ...

  5. BZOJ1030: [JSOI2007]文本生成器

    Description JSOI交给队员ZYX一个任务,编制一个称之为"文本生成器"的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以随机生 ...

  6. BZOJ 1030: [JSOI2007]文本生成器 [AC自动机 DP]

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3953  Solved: 1614 [Submit][St ...

  7. bzoj 1030: [JSOI2007]文本生成器(AC自动机+DP)

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 5187  Solved: 2136 [Submit][St ...

  8. [JSOI2007]文本生成器

    Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 4962  Solved: 2055 [Submit][Status][Discuss] Descrip ...

  9. 【BZOJ1030】[JSOI2007] 文本生成器(AC自动机上跑DP)

    点此看题面 大致题意: 给你\(N\)个字符串(只含大写字母),要你求出有多少个由\(M\)个大写字母构成的字符串含有这\(N\)个字符串中的至少一个. \(AC\)自动机 看到题目,应该比较容易想到 ...

最新文章

  1. 深入理解Golang包导入
  2. 机器人学习--Turtelbot3学习--如何使用cartographer建图
  3. Java工程师知识图谱
  4. 计算机模型机设计实验报告,基本模型机设计与实现 实验报告
  5. 工作329:uni-数据为空不显示
  6. 【C语言进阶深度学习记录】十七 宏定义的使用与分析
  7. 妹子每天加班1分钟,半年崩溃!向公司索赔55万!
  8. 获得进程id_浅谈python中的多线程和多进程(二)
  9. 举例 微积分 拉格朗日方程_《微积分教程》数学笔记目录
  10. websocket握手失败_WebSocket握手期间出错:意外的响应代码:500
  11. Web网站压力测试工具
  12. win10+Ubuntu16.04双系统安装——史上最稳总结,排除一切花里花哨
  13. (摘)老司机也必须掌握的MySQL优化指南
  14. Android实战——LeakCanary检测内存泄漏
  15. nvidia-smi 重置GPU
  16. 考研数学备考思路和计划制定
  17. 机器视觉算法与应用001
  18. 2019 中科院 信工所二室 夏令营 笔试面试经验
  19. python相关的证书_有哪些含金量较高的Python证书?
  20. 广东工业大学计算机专业分流,2017年广东工业大学大类招生学生专业分流工作小组...

热门文章

  1. 非名校毕业年薪20W程序员 心得分享
  2. word文档保存修订信息,打开时默认不显示标记信息
  3. cocos2d怎么开发android,android cocos2d x 怎么创建地图?
  4. PowerDesigner添加索引
  5. TCGA里面的任意基因做生存分析 批量生存分析
  6. css鼠标点击改变颜色,点其他的颜色又变回去,去除focus黑边框
  7. 曾经风光无限的90后创业者,如今身在何处?
  8. tp5使用sum()聚合函数分组查询
  9. 用深度学习玩图像的七重关卡
  10. System Design [youtube搬运] Instagram 笔记