网页设计与网站建设考试热点,网站设计的概述,wordpress视频直播,安阳区号是多少1030: [JSOI2007]文本生成器 Time Limit: 1 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id1030Description JSOI交给队员ZYX一个任务#xff0c;编制一个称之为“文本生成器”的电脑软件#xff1a;该软件的使用者是一些低幼人群#xff0c;他… 1030: [JSOI2007]文本生成器 Time Limit: 1 Sec Memory Limit: 162 MBhttp://www.lydsy.com/JudgeOnline/problem.php?id1030 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 ans26^m - 不包含任何一个模板串的数目 求不包含任何一个模板串的数目 套路 dp[i][j] 还剩下i位没填当前在AC自动机j号节点 #includequeue
#includecstdio
#includecstring#define mod 10007using namespace std;int n,m,len,id,root,tot1;
int f[61*101],trie[61*101][27];
char s[101];
bool mark[61*101];
int dp[101][61*101];
bool v[101][61*101];queueintq;struct ACautomata
{void insert(){lenstrlen(s);root1;for(int i0;ilen;i){ids[i]-A;if(!trie[root][id]) trie[root][id]tot;roottrie[root][id];}mark[root]true;}void getfail(){for(int i0;i26;i) trie[0][i]1;q.push(1);int now,j;while(!q.empty()){nowq.front(); q.pop();for(int i0;i26;i){if(!trie[now][i]) {trie[now][i]trie[f[now]][i];continue;}q.push(trie[now][i]);jf[now];f[trie[now][i]]trie[j][i];if(mark[trie[j][i]]) mark[trie[now][i]]true;}}}int dfs(int l,int now){if(!l) return 1;if(v[l][now]) return dp[l][now];v[l][now]true;for(int i0;i26;i)if(!mark[trie[now][i]]) dp[l][now](dp[l][now]dfs(l-1,trie[now][i]))%mod;return dp[l][now]; }
};ACautomata AC;int main()
{scanf(%d%d,n,m);while(n--){scanf(%s,s);AC.insert();}AC.getfail();int aAC.dfs(m,1);int b1;for(int i1;im;i) bb*26%mod;printf(%d,(b-amod)%mod);
} 转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6995317.html