【题解】Luogu P4052[JSOI2007]文本生成器 AC自动机

AC自动机上DP

f[i][j]表示节点j,串长为i

当一个串的尾节点被标红或其fail指针指向的被标红,都是可读的

用总的减去不可读的即为答案

#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#define MOD (10007)
#define  N  (10005)
using namespace std;int Son[N][26],End[N],Fail[N];
int n,m,sz,f[105][N],ans;
char s[N];
queue<int>q;void Insert(char s[])
{int now=0,len=strlen(s);for (int i=0; i<len; ++i){int x=s[i]-'A';if (!Son[now][x]) Son[now][x]=++sz;now=Son[now][x];}End[now]|=1;
}void Build_Fail()
{for (int i=0; i<26; ++i)if (Son[0][i])q.push(Son[0][i]);while (!q.empty()){int now=q.front();q.pop();for (int i=0; i<26; ++i){if (!Son[now][i]){Son[now][i]=Son[Fail[now]][i];continue;}End[Son[now][i]]|=End[Son[Fail[now]][i]];Fail[Son[now][i]]=Son[Fail[now]][i];q.push(Son[now][i]);}}
}int main()
{scanf("%d%d",&n,&m);for (int i=1; i<=n; ++i)scanf("%s",s),Insert(s);Build_Fail();f[0][0]=1;for (int i=1; i<=m; ++i)for (int j=0; j<=sz; ++j)for (int k=0; k<26; ++k)if (!End[Son[j][k]])(f[i][Son[j][k]]+=f[i-1][j])%=MOD;for (int i=0; i<=sz; ++i)(ans+=f[m][i])%=MOD;int sum=1;for (int i=1; i<=m; ++i)sum=sum*26%MOD;printf("%d\n",(sum-ans+MOD)%MOD);
}

 

转载于:https://www.cnblogs.com/gengyf/p/11145875.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在SQL Server中使用命令调用SSIS包

在SQL Server中可以使用dtexec命令运行SSIS包&#xff08;2005以上版本&#xff09;,当然也可以通过系统过程:xp_cmdshell调用dtexec运行SSIS包。 具体操作步骤如下&#xff1a; 1.首先&#xff0c;当然是要在Business Intelligence中设计好包&#xff0c;并调试通过。 2.然后&…

c语言 结构体数组嵌套另一个结构体数组怎么初始化?,如何初始化结构体数组(内嵌结构体)...

Keil 结构体变量初始化tujidi1csd25142016-09-30一维数组结构体数组结构体数组&#xff0c;通过改变指针类型改变访问数组的方式toto129748850424332014-08-01mfc结构体指针、结构体数组指针u01399024812292014-12-14memset结构体初始化shagua_nan184092016-03-16【C -> 容器…

本特利3500_本特利技术控的自我修养之 轴位移探头安装

正在学习之-客户答疑国家疫情当前&#xff0c;除了保护好自己、不给国家添麻烦以外我们能做的实在有限。上学时因为种种原因没有按家里的期望学医&#xff0c;也没有能够考上最喜欢的生物专业(理想中希望去非洲做动物类研究工作-跟拍狮子)至今还是憾事&#xff0c;但是加入本特…

map标签的详细使用参数

map标签必须成对出现&#xff0c;即 <map> ....</map> 同时map必须和area配合使用。 img标签里的usermap属性值必须与map标签里的id和name值完全一致 area标签&#xff1a;定义图片的点击区域 area 是单标签&#xff0c;不成对。 属性&#xff1a; accesskey 快捷键…

快捷方式修复_Mac上的屏幕截图不起作用该如何修复?

屏幕截图是Mac提供的内置功能&#xff0c;很少有它不起作用。但是由于某些意外的设置或硬件问题&#xff0c;Mac上的屏幕截图有时无法正常工作&#xff0c;这里提供的是Mac上的屏幕截图不起作用该如何修复&#xff1f;1.在Mac上启用屏幕快照快捷方式如果您按CMD SHIFT 3或CMD…

计算机二级2019年9月c语言题库,(3)2019年9月计算机二级C语言试题

当你的计算机知识还撑不起你的学习、工作时&#xff0c;那你就应该静下心来刷计算机等级考试题库-二级C语言试题。1)下列叙述中正确的是( )。A.解决同一个问题的不同算法的时间复杂度一般是不同的B.解决同一个问题的不同算法的时间复杂度必定是相同的C.对同一批数据作同一种处理…

MySQL对于有大量重复数据表的处理方法

需要在MySQL的一张innodb引擎的表(tableA)上添加一个唯一索引(idx_col1_u)。但是对于每个key(col1)表中已经有大量重复数据。此时&#xff0c;做数据的手工清理&#xff0c;或者SQL处理是非常耗时的。 MySQL有一个独有的 alter ignore add unique index的语法。 ALTER [ONLINE …

python qt 按钮_PyQt(Python+Qt)学习随笔:toolButton的popupMode属性

属性介绍toolButton的popupMode属性为设有菜单集或Action列表的toolButton指定菜单弹出模式&#xff0c;类型为枚举类型ToolButtonPopupMode&#xff0c;有如下三种模式&#xff1a;1、DelayedPopup(值为0)&#xff1a;按住toolButton一定时间(超时取决于样式&#xff0c;请参见…

最短哈密顿路径 c语言算法,最短路径系列【最短路径、哈密顿路等】

最短路径问题&#xff0c;一个经典算法问题。本文粗略总结了一种常见的最短路径算法&#xff0c;以及几个最短路径变种问题的解法&#xff0c;其中包括哈密顿路。对于有向图或者无向图&#xff0c;假设有V个节点&#xff0c;E条边&#xff0c;G[Vi,Vj]表示图中点Vi到Vj边的权值…

Android应用开发学习笔记之多线程与Handler消息处理机制

作者&#xff1a;刘昊昱 博客&#xff1a;http://blog.csdn.net/liuhaoyutz 和JAVA一样&#xff0c;Android下我们可以通过创建一个Thread对象实现多线程。Thread类有多个构造函数&#xff0c;一般通过构造函数Thread(Runnable runnable)实现多线程&#xff0c;代码如下&#…

nsga2算法c++实现_Bellman-Ford算法

之前文章对于Dijkstra算法进行了讲解和实现&#xff0c;其实现的原理在于采用贪心算法&#xff0c;遍历N(结点数)次&#xff0c;每次找到局部最优的路径的结点u&#xff0c;判断该节点可达的顶点v的权重是否大于结点u权重u->v的权重&#xff0c;如果大于则替换顶点v的权重(也…

JSTL详解(一)

将jstl.jar包导入到工程中 jstldemo1.jsp <% taglib prefix"c" uri"http://java.sun.com/jsp/jstl/core" %> <% page contentType"text/html; charsetgb2312" language"java" %> <c:set var"userName&quo…

android 获取phone实例,Android ContentProvider获取手机联系人实例

在做项目的时候&#xff0c;因为要用到我们自动获取联系人的姓名和电话&#xff0c;就想到了ContentProvider分享数据的功能&#xff0c;这样做既节省了时间&#xff0c;也减少了我们输入错误号码的几率&#xff0c;所以&#xff0c;想在这里把小demo分享给大家&#xff0c;方便…

电脑长截图软件_电脑屏幕长截图+WORD文档里没有插入PDF文件选项时怎么办? 简单一招轻松完成...

111111办 公 小 技 巧在用电脑查看网页时&#xff0c;想把网页上的内容截下来&#xff0c;保存成一张图片&#xff0c;可是内容又不全在一屏里&#xff0c;不能简单的用截屏完成&#xff0c;这时怎么办&#xff1f;想把一个PDF文件插入到WORD文档里&#xff0c;而电脑里的WORD版…

年终总结

时光飞逝,岁月如风,不知不觉新的一年来临了,回顾2010自己收获还是挺多的。虽然钱没余到多少&#xff0c;但是更多的是让我得到了成长、获得了经验。 我是8月份来到了爸妈在线的&#xff0c;很荣幸成为了爸妈在线的一员&#xff0c;同时也很高兴加入了技术研发部这个部门&#x…

Goland配置leetcode

1. 安装 首先在goland的setting界面上找到Plugins&#xff0c;然后搜索关键字leetcode&#xff0c;找到LeetCode Editor&#xff0c;安装它。 在安装后&#xff0c;第一次需要对其进行配置&#xff0c;在Tools中找到LeetCode Plugins&#xff0c;如下图所示进行配置。首先国内…

华为联发科可以升级鸿蒙吗,华为鸿蒙系统降临!首批升级手机确定,联发科芯片被放弃?...

原标题&#xff1a;华为鸿蒙系统降临&#xff01;首批升级手机确定&#xff0c;联发科芯片被放弃&#xff1f;按照计划&#xff0c;华为会在4月份逐渐开放鸿蒙系统手机版的升级&#xff0c;首批可升级的机型目前华为只确定了Mate X2。虽然说这两年采用华为自主芯片的手机&#…

python 多关键字匹配_使用django的objects.filter()方法匹配多个关键字的方法

介绍&#xff1a;今天在使用django的时候忽然想用到&#xff0c;如何匹配多个关键字的操作&#xff0c;我们知道django有一个objects.filter()方法&#xff0c;我们可以通过如下一句代码实现匹配数据库中title包含key关键词的文章名称。table.objects.filter(title__containske…

js中一些怪异的写法

1、var s (10)||{name:janey}   因为10是false,按照或运算规则&#xff0c;继续运算&#xff0c;得到{name:janey} &#xff0c;所以s{name:janey}   同理 var s (11)||{name:janey}&#xff0c;这时11为true,不再继续运算下去&#xff0c;所以strue;   或运算的结果并…

wordpress html页面缓存 cdn,WordPress 下老旧又高效的本地缓存插件 cos-html-cache

摘要Cos Html Cache是一种非常有效的WordPress页面缓存插件可以让你的站点更快更灵敏。基于URL重写&#xff0c;插件将自动生成HTML文件的帖子真正当他们第一次加载&#xff0c;并自动更新HTML文件。说起 WordPress 的缓存插件来对明月来说绝对是个老生常谈的话题了&#xff0c…