当前位置: 首页 > news >正文

外贸公司企业网站/银川网页设计公司

外贸公司企业网站,银川网页设计公司,市场监督管理局新式制服,微信公众号登录入口在哪里http://www.lydsy.com/JudgeOnline/problem.php?id1030 Description JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群, 他们现在使用的是GW文本生成器v6版。该软件可以随机生成一些文章―――…

http://www.lydsy.com/JudgeOnline/problem.php?id=1030

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

————————————————————————————

看到字符串就想到了AC自动机。

看到求可能读懂就要正难则反,求一定读不懂的个数。

看到这篇题解,你就知道这是一个dp。

那么我们可以f[i][j]表示(在AC自动机上)走了j步后到达第i个节点,一定读不懂的个数。

那么显然如果i的儿子s不是我们能读懂的字符串的结尾(fail指针指向的节点也算),那么f[s][j+1]+=f[i][j]。

然后在对所有的AC自动机的节点ans+=f[i][m]就得到了一定读不懂的文章个数。

再一减即可。

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
const int p=10007;
const int N=60005;
struct trie{bool ed;int a[26];int fail;
}tree[N];
int cnt=0,n,m,f[N][105];
inline void insert(string s){int now=0;int len=s.length();for(int i=0;i<len;i++){int t=s[i]-'A';if(tree[now].a[t]==0){cnt++;tree[now].a[t]=cnt;}now=tree[now].a[t];}tree[now].ed=1;return;
}
void getfail(){queue<int>q;tree[0].fail=0;for(int i=0;i<26;i++){if(tree[0].a[i]){tree[tree[0].a[i]].fail=0;q.push(tree[0].a[i]);}}while(!q.empty()){int u=q.front();int p=tree[u].fail;q.pop();for(int i=0;i<26;i++){if(tree[u].a[i]){tree[tree[u].a[i]].fail=tree[p].a[i];q.push(tree[u].a[i]);}else{tree[u].a[i]=tree[p].a[i];}}if(tree[p].ed)tree[u].ed=1;}return;
}
int main(){scanf("%d%d",&n,&m);int ans=1;for(int i=1;i<=m;i++)ans=ans*26%p;for(int i=1;i<=n;i++){string s;cin>>s;insert(s);}getfail();f[0][0]=1;for(int j=1;j<=m;j++){for(int i=0;i<=cnt;i++){if(!f[i][j-1])continue;for(int k=0;k<26;k++){int v=tree[i].a[k];if(tree[v].ed)continue;f[v][j]+=f[i][j-1];f[v][j]%=p;}}}for(int i=0;i<=cnt;i++){ans-=f[i][m];ans=(ans%p+p)%p;}printf("%d\n",ans);return 0;
}

 

转载于:https://www.cnblogs.com/luyouqi233/p/8241836.html

http://www.lbrq.cn/news/1555291.html

相关文章:

  • 商城网站建设天软科技/网站托管服务商
  • 衢州做网站的公司/怎样让自己的网站排名靠前
  • 神鹰网站建设公司/代运营公司哪家好一些
  • 粉末涂料做网站有用吗/东莞seo推广公司
  • 富平做网站/怎么弄一个自己的链接
  • 自适应微网站开发/网络营销计划包括哪七个步骤
  • 申请域名后怎么做网站/口碑营销策略有哪些
  • 郑州网站营销汉狮/宁国网络推广
  • 网站设计 价格/网站建站开发
  • 网站建设规划书的制作/网络运营培训
  • 南宁建设公司网站/河南seo推广
  • 做投资类网站服务器/房地产销售
  • wordpress更改站点地址/百度加盟
  • 怎么建立一个购物网站/现在比较好的营销平台
  • 百度竞价网站谁做/响应式模版移动优化
  • 温州城乡建设官网/seo整站优化哪家专业
  • 安徽网站建设方案开发/深圳最新消息
  • 在国外做电商网站/网站seo是什么
  • 做pc端网站流程/如何推广普通话的建议6条
  • 南昌做网站kaiu/seo一键优化
  • 网站项目设计书/惠州企业网站seo
  • 阿里云做网站的/泽成杭州seo网站推广排名
  • w3c验证网站/北京百度网站排名优化
  • 怎样做网站外部样式/星沙网站优化seo
  • 淮北做网站公司/百度浏览器官网入口
  • 做pc网站排/五种常用的网站推广方法
  • 用手机可以做网站/电脑清理软件十大排名
  • 交友征婚婚恋网站系统php+mysql.rar/南宁白帽seo技术
  • 吕梁网站制作吕梁安全/app怎么推广运营
  • 网站开发亿码酷流量/自己想开个网站怎么弄
  • 云原生俱乐部-RH134知识点总结(2)
  • 计算机视觉(一):nvidia与cuda介绍
  • Python使用数据类dataclasses管理数据对象
  • OpenCV 图像处理核心技术:边界填充、算术运算与滤波处理实战
  • 大模型应用发展与Agent前沿技术趋势(中)
  • topographic terrain