正题

题目链接:https://www.luogu.com.cn/problem/P2444


题目大意

nnn个字符串,求有没有一个无限的字符串不包含任何一个给出的字符串。


解题思路

考虑ACACAC自动机的匹配方式,不过每次我们可以每次在构出的TrieTrieTrie树上随意走(就是求完failfailfail数组之后的TrieTrieTrie树)。所以我们如果找到了一个环并且路径上没有任何一个点是其他点的终止位置就好了。

不过对于一个点,它的failfailfail树上到根节点的链上有终止节点,那么改点的后缀也是一个字符串。


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
using namespace std;
const int N=31000;
int n,cnt,fail[N],ch[N][2];
bool v[N],vis[N],flag;
char s[N];queue<int> q;
void Make(char *s){int n=strlen(s+1),x=0;for(int i=1;i<=n;i++){int c=s[i]-'0';if(!ch[x][c])ch[x][c]=++cnt;x=ch[x][c];}v[x]=1;return;
}
void Get_Fail(){for(int i=0;i<2;i++)if(ch[0][i])q.push(ch[0][i]);while(!q.empty()){int x=q.front();q.pop();for(int i=0;i<2;i++)if(!ch[x][i])ch[x][i]=ch[fail[x]][i];else{fail[ch[x][i]]=ch[fail[x]][i];v[ch[x][i]]|=v[fail[ch[x][i]]];q.push(ch[x][i]);}}return;
}
void dfs(int x){if(flag||v[x])return;if(vis[x]){flag=1;return;}vis[x]=1;for(int i=0;i<2;i++)dfs(ch[x][i]);vis[x]=0;return;
}
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%s",s+1);Make(s);}Get_Fail();dfs(0); if(flag)printf("TAK");else printf("NIE");return 0;
}

P2444-[POI2000]病毒【AC自动机】相关推荐

  1. BZOJ2938[Poi2000]病毒——AC自动机

    题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段,试问,是否 ...

  2. BZOJ2938: [Poi2000]病毒(AC自动机)

    Orz wlp 5min讲完后缀数组 题意 给出$n$个0, 1串 问是否可以构造出一个无限长的字符串使其不包含任意串 Sol 刚开始我试图假装自己不知道这是个AC自动机的题然后来做.发现根本不可能q ...

  3. 洛谷 - P2444 - 病毒 - AC自动机

    https://www.luogu.org/problemnew/show/P2444 有点恶心,不太明白fail的意义. #include<bits/stdc++.h> using na ...

  4. P2444 [POI2000]病毒(ACAM上找环)

    LINK 给出一些010101串,问是否存在无限长的某个010101串 使得给定的任何一个010101串都不是它的子串 普通考虑好像不太好弄,我们建出ACAMACAMACAM看看 预处理ed[i]ed ...

  5. 【谈谈知识点】AC自动机

    前言 一言不合就开坑,说的就是我~ 之前觉得这东西挺难,然后某天早上花了一个半小时就学会了-- P.S:如果你诚心诚意的想学会AC自动机,一定要先去看懂KMP和Trie. 而且一定要好好理解KMP的n ...

  6. ac自动机,自动ac机(bushi

    哈哈哈哈我学明白了也许吧.挂几篇题解: b站的这个up讲得太好啦:https://www.bilibili.com/video/BV1uJ411Y7Eg?p=3&vd_source=f5170 ...

  7. AC自动机(题目+模板)

    学习博客:https://www.cnblogs.com/hyfhaha/p/10802604.html AC自动机可以认为是kmp+trie树. trie树数组大小是字符串数目n*最大字符串长度mx ...

  8. 洛谷试炼日记(trie树,AC自动机,回文自动机)(解题报告)

    文章目录 **Trie树** P4683 [IOI2008] Type Printer 打印机 **AC自动机** P2444 [POI2000]病毒 **回文自动机** P5496 [模板]回文自动 ...

  9. bzoj 2938: [Poi2000]病毒(AC自动机)

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 1085  Solved: 541 [Submit][Status] ...

  10. 【BZOJ2938】病毒,AC自动机练习

    传送门(权限题) 2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 462 Solved: 240 [Submit][S ...

最新文章

  1. python程序实例教程基础-Python程序设计案例教程——从入门到机器学习(微课版)...
  2. 两个大整数相乘 C++ 版本 源码
  3. ECMAScript5新增Array方法forEach的实现
  4. 设计模式之GOF23访问者模式
  5. 艾默生变频器报警PHP,艾默生/Emerson变频器启动就报警维修很牛
  6. 已知两点坐标和三边长度,求三角形第三点的坐标
  7. mrpoid模拟器java版_mrpoid模拟器2019下载
  8. 野外探路手机必备地图神器
  9. DTI脑影像处理流程-配准机器生成的特征图
  10. 【原】在vc中实现获取汉字拼音的首字母 - lixiaosan的专栏 - CSDNBlog
  11. 中文版扩散模型课程:第一单元
  12. python变量命名为什么不能以数字开头
  13. 【STM32】入门(零):keil安装、科学使用、芯片包安装
  14. 熬夜读书最好吃什么东西补充能量类``
  15. week11——实验(月模拟题3:CSP201609 03)
  16. 那些证书相关的玩意儿
  17. ESP8266深度学习之五通过两个ESP8266芯片实现相互通信功能(AT模式)
  18. 武汉理工大学计算机考研排名2015,武汉理工大学和南京理工大学计算机研究生比较一下...
  19. BlockChain-Account_TakeOver
  20. ONVIF获取265的rtsp地址,ptz控制记录

热门文章

  1. abp框架java,【Net】ABP框架学习之正面硬钢
  2. java符号%3e%3e是什么意思,终于找到了!有了它你就可以读懂字节码了!
  3. 数字怎么横 竖排_从这些数字更深入了解打包箱房
  4. 你真的知道Java同步锁何时释放?
  5. 第jiu届蓝桥杯单片机省赛真题_第九届蓝桥杯单片机组省赛试题.pdf
  6. java代码实现链表_java单链表代码实现
  7. spring boot jar包_「Spring Boot 新特性」 jar 大小自动瘦身
  8. mysql group where_[MySQL] 测试where group by order by的索引问题
  9. thinkpadt450s换键盘视频_ikbc c87 入门级有线机械键盘测评
  10. mysql数据库5120_超傻瓜 H3C S5120 限速配置