以后凡是在一个中出现>=1次的题就直接转0次用容斥好了、

然后剩下的就是怎么找一个单词也不出现的文本的个数了

显然,这种计数类问题需要用dp  ,而且我们需要知道所有单词会为我们添加字母造成影响,所以需要用ac自动机,跳过所有标记的单词

以前是写的指针ac自动机,但它不好写而且巨慢、 所以换了数组

要注意用0表示null   1表示root   为了方便,我们将0的所有下一个赋为root    同时这个失配指针是指向最近的和自己相同的字母   root可表示所有字母..

而且失配是单词这个点也不能取,,因为

然后sp数组开小了溢出导致f数组储存信息错误、、查了1.5h才查出来

码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
queue<int>q;
int sz=1,ans1,ans2,n,m,i,j,sp[7000],ch[7000][27],dc[7000],f[105][7000];
char str[105];
#define P 10007
void ins()
{int l=strlen(str),i,o=1;for(i=0;i<l;i++){int zm=str[i]-'A'+1;if(ch[o][zm])o=ch[o][zm];        else o=ch[o][zm]=++sz;}dc[o]=1;
}
void shipei()
{int i;sp[1]=0;q.push(1);while(!q.empty()){int st=q.front();q.pop();for(i=1;i<=26;i++){if(ch[st][i]==0)continue;         int k=sp[st];while(!ch[k][i])k=sp[k];sp[ch[st][i]]=ch[k][i];if(dc[ch[k][i]])dc[ch[st][i]]=1;q.push(ch[st][i]);}}
}
void dp(int x)
{int i,j;for(i=1;i<=sz;i++){if(dc[i]||!f[x-1][i])continue;for(j=1;j<=26;j++){int k=i;while(!ch[k][j])k=sp[k];f[x][ch[k][j]]=   (f[x][ch[k][j]] +f[x-1][i] )%P;//if(x<2)cout<<f[x][ch[k][j]]<<" ";    }   }
}
int main()
{ans2=1;
scanf("%d%d",&n,&m)   ;
for(i=1;i<=26;i++)ch[0][i]=1;
f[0][1]=1;
for(i=1;i<=n;i++)
{
scanf("%s",str);
ins();
}
shipei();for(i=1;i<=m;i++)dp(i);for(i=1;i<=m;i++)ans2=(ans2*26)%P;for(i=1;i<=sz;i++)if(!dc[i])ans1=(ans1+f[m][i])%P;printf("%d",(ans2-ans1+P)%P);
}

2017.8.14 文本生成器 失败总结相关推荐

  1. 2017.9.25 随机数生成器 失败总结

    .这个题要用bsgs 如果知道bsgs的话化式子就很有方向了 首先把霍纳法则拆成数列 然后得到 x1*a^n + a^n-1 *b+ a^n-2 *b+.. a*b==t  (%P) 用等比数列公式, ...

  2. 2017.9.14 星际竞速 失败总结

    这个题就是要选一些边,覆盖所有点,并且边的权值和最小 然后这是一开始建的图: 有如下问题: 1.边数太多 2.最大流不满足问题性质 为了解决2,我们必须让每一个方案都满足最大流的条件 原图的问题是:想 ...

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

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

  4. [JSOI2007]文本生成器

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

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

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

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

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

  7. OpenAI的GPT-2:用Python构建世界上最先进的文本生成器的简单指南

    介绍 "The world's best economies are directly linked to a culture of encouragement and positive f ...

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

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

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

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

最新文章

  1. Mysql-4-数据库的基本操作
  2. Flask Web 开发 错误页面自定义
  3. Python 学习第三部分函数——第一章函数基础
  4. JVM JRE JDK,这些东西到底是什么?(转载)
  5. recv发送失败 缓冲区太小_从 GFS 失败的架构设计来看一致性的重要性
  6. 新萝卜家园win11全新专业版64位系统v2021.07
  7. 网络流(最大流):CodeForces 499E Array and Operations
  8. 201771010112罗松《面向对象程序设计(java)》第十周学习总结
  9. Windbg Configuration
  10. win10自动更新系统导致 点击睡眠之后直接关机
  11. STLink连接与资源下载
  12. C/C++程序设计13:代码实现开机自启动--以QQ为例
  13. 从堂兄平淡人生看人生价值的实现---有感于堂兄54岁成为家乡新闻人物
  14. href和src的区别
  15. 2014美国大学计算机专业排名,2014年美国大学计算机专业研究生排名
  16. 函数式编程之根-拉姆达运算/演算(λ-calculus)
  17. 深入剖析DHCP服务IP地址自动分配原理
  18. mysql-发生系统错误1067
  19. promise 实现分批请求
  20. 中债登,中证登,上海清算所区别

热门文章

  1. href up test.php,test.php
  2. Kotlin学习笔记 第一章开始 第二章 基础
  3. poj 3660 CwoContest Floyed传递闭包
  4. 分布式日志收集系统Apache Flume的设计详细介绍
  5. React-Native的TextInput组件的设置以及获取输入框的内容
  6. 创建对象的内存理解(图示)
  7. mysql 创建和删除库_mysql入门系列:mysql创建、删除和选择数据库
  8. java 数据验证_Java 数据验证
  9. zsh 使用通配符功能
  10. git 删除tag_Git常用命令