AC自动机/DP


  Orz ZYF

  玛雅快要省选了,赶紧复(xue)习(xi)一下AC自动机……

  其实在AC自动机上DP并没有当初想的那么复杂……就是把DP的转移关系换成了AC自动机上的边而已(不过这题好像搞成了Trie图?)

 /**************************************************************
Problem: 1030
User: Tunix
Language: C++
Result: Accepted
Time:208 ms
Memory:7148 kb
****************************************************************/ //BZOJ 1030
#include<vector>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#define rep(i,n) for(int i=0;i<n;++i)
#define F(i,j,n) for(int i=j;i<=n;++i)
#define D(i,j,n) for(int i=j;i>=n;--i)
#define pb push_back
using namespace std;
inline int getint(){
int v=,sign=; char ch=getchar();
while(ch<''||ch>''){ if (ch=='-') sign=-; ch=getchar();}
while(ch>=''&&ch<=''){ v=v*+ch-''; ch=getchar();}
return v*sign;
}
const int N=,INF=~0u>>;
typedef long long LL;
/******************tamplate*********************/
const int MOD=;
int n,m,cnt=;
struct Trie{
int ch[],cnt,fail;
bool sign;
}T[N];
inline int id(char c){return c-'A';}
void ins(char *s){
int x=,y;
rep(i,strlen(s)){
y=id(s[i]);
if (T[x].ch[y]==)
T[x].ch[y]=++cnt;
x=T[x].ch[y];
}
T[x].sign=;
}
int Q[N];
void make_fail(){
int l=,r=-;
Q[++r]=;
while(l<=r){
int x=Q[l++],y,j;
rep(i,){
j=T[x].fail;
while(j && !T[j].ch[i]) j=T[j].fail;
if (T[x].ch[i]){
y=T[x].ch[i];
T[y].fail=j ? T[j].ch[i] : ;
T[y].sign=T[y].sign|T[T[y].fail].sign;
Q[++r]=y;
}else T[x].ch[i]=j ? T[j].ch[i] : ;
}
}
}
int f[][N][];
void dp(){
f[][][]=;
rep(i,m) F(j,,cnt) rep(k,) F(l,,)
if(T[T[j].ch[k]].sign)
(f[i+][T[j].ch[k]][]+=f[i][j][l])%=MOD;
else (f[i+][T[j].ch[k]][l]+=f[i][j][l])%=MOD;
}
char s[N];
int main(){
#ifndef ONLINE_JUDGE
freopen("1030.in","r",stdin);
freopen("1030.out","w",stdout);
#endif
n=getint(); m=getint();
F(i,,n){
scanf("%s",s);
ins(s);
}
make_fail();
dp();
int ans=;
F(i,,cnt) (ans+=f[m][i][])%=MOD;
printf("%d\n",ans);
return ;
}

1030: [JSOI2007]文本生成器

Time Limit: 1 Sec  Memory Limit: 162 MB
Submit: 2224  Solved: 923
[Submit][Status][Discuss]

Description

JSOI
交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版。该软件可以随
机生成一些文章―――总是生成一篇长度固定且完全随机的文章——
也就是说,生成的文章中每个字节都是完全随机的。如果一篇文章中至少包含使用者们了解的一个单词,那么我们说这篇文章是可读的(我们称文章a包含单词b,
当且仅当单词b是文章a的子串)。但是,即使按照这样的标准,使用者现在使用的GW文本生成器v6版所生成的文章也是几乎完全不可读的。
ZYX需要指出GW文本生成器 v6生成的所有文本中可读文本的数量,以便能够成功获得v7更新版。你能帮助他吗?

Input

输入文件的第一行包含两个正整数,分别是使用者了解的单词总数N (<= 60),GW文本生成器 v6生成的文本固定长度M;以下N行,每一行包含一个使用者了解的单词。 这里所有单词及文本的长度不会超过100,并且只可能包含英文大写字母A..Z  。

Output

一个整数,表示可能的文章总数。只需要知道结果模10007的值。

Sample Input

2 2
A
B

Sample Output

100

HINT

Source

[Submit][Status][Discuss]

【BZOJ】【1030】【JSOI2007】文本生成器的更多相关文章

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

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

  2. BZOJ 1030 [JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2624  Solved: 1087[Submit][Stat ...

  3. bzoj 1030: [JSOI2007]文本生成器 (ac自己主动机上的dp)

    1030: [JSOI2007]文本生成器 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2635  Solved: 1090 [id=1030&qu ...

  4. 【刷题】BZOJ 1030 [JSOI2007]文本生成器

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

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

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1030 [题意] 给n个小串,随机构造一个长为m的大串,一个串合法当且仅当包含一个或多个 ...

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

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1030 [题目大意] 求出包含任意一个给定串的串数量 [题解] 我们求出不包含任意一个给 ...

  7. BZOJ 1030 [JSOI2007]文本生成器 (Trie图+DP)

    题目大意:给你一堆字符串,一个串不合法的条件是这些字符串中任意一个是这个串的子串,求合法的串的数量 其实这道题比 [HNOI2008]GT考试 那道题好写一些,但道理是一样的 只不过这道题的答案可以转 ...

  8. 1030: [JSOI2007]文本生成器

    1030: [JSOI2007]文本生成器 https://www.lydsy.com/JudgeOnline/problem.php?id=1030 分析: AC自动机+dp. 正难则反,求满足的, ...

  9. 【BZOJ】1030: [JSOI2007]文本生成器(递推+ac自动机)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1030 其实做了1009也不会感到很难了,无非将kmp变成了ac自动机. 设f[i,j]表示前i个串当 ...

  10. 1030: [JSOI2007]文本生成器 - BZOJ

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

随机推荐

  1. Silverlight 独立存储(IsolatedStorageFile)

    1.在Web中添加天气服务引用地址 http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?wsdl 2.在Web中添加Wcf服务接口I ...

  2. Cron和Spring定时任务

    1.Java Spring spring定时任务cronExpression的值(配置定时时间)格式说明: 一个cronExpression表达式有至少6个(也可能是7个)由空格分隔的时间元素.从左至 ...

  3. SVN客户端解决authorization failed问题

    遇到authorization failed问题 进人 [root@localhost conf]# pwd /opt/svndata/shell/conf [root@localhost conf] ...

  4. angularJS通过post方法下载excel文件

    最近工作中遇到,要使用angularJS的post方法来下载excel的情况.网上找到一个帖子:http://stackoverflow.com/questions/22447952/angularj ...

  5. linux安装至少有哪两个分区,各自作用是什么?

    1.至少有/代表根分区,/swap代表的意思是交换分区. 2.swap相当于缓存的作用:

  6. nexcel 读取 excel

    procedure TfrmUserV3.ImportUser(const AFileName: string); var book :IXLSWorkBook; ws : IXLSWorkSheet ...

  7. PHP+MYSQL会员系统的开发实例教程

    本文通过一个简单的实例完成了完整的PHP+MySQL会员系统功能.是非常实用的一个应用.具体实现步骤如下: 一.会员系统的原理: 登陆-->判断-->保持状态(Cookie或Session ...

  8. python 面向对象、特殊方法与多范式、对象的属性及与其他语言的差异

    1.python 面向对象 文章内容摘自:http://www.cnblogs.com/vamei/archive/2012/06/02/2532018.html   1.__init__() 创建对 ...

  9. (转)python文件操作 seek(),tell()

    seek():移动文件读取指针到指定位置 tell():返回文件读取指针的位置 seek()的三种模式: (1)f.seek(p,0)  移动当文件第p个字节处,绝对位置 (2)f.seek(p,1) ...

  10. java学习资源汇总

    http://www.tutorialspoint.com/jsp/jsp_standard_tag_library.htm