题目

传送门:QWQ

传送到洛谷QWQ

分析

夏爷爷传送门

代码

#include <bits/stdc++.h>
using namespace std;
const int N=;
int n, son[N*][], fail[N*], end[N*], q[N*], vis[N*], c[N*];
char s[N][N*]; bool cycle(int u)
{
c[u]=;
for(int i=;i<=;i++)
{
int v=son[u][i];
if(c[v]) return true;
if(vis[v] || end[v]) continue;
vis[v]=;
if(cycle(v)) return true;
}
c[u]=; return false;
} int find(int cur,int i)
{
if(!cur) return ;
if(son[cur][i]) return son[cur][i];
return fail[son[cur][i]]=find(fail[cur],i);
} int main()
{
int newp=,rt=;
scanf("%d",&n);
for(int j=;j<=n;j++)
{
scanf("%s",s[j]+);
int cur=rt, l=strlen(s[j]+);
for(int i=;i<=l;i++)
{
if(!son[cur][s[j][i]-'']) son[cur][s[j][i]-'']=++newp;
cur=son[cur][s[j][i]-''];
}
end[cur]=;
} int l=,r=; q[]=;
for(;l<=r;l++)
{
for(int i=;i<=;i++)
if(son[q[l]][i])
{
int v=son[q[l]][i];
fail[v]=find(fail[q[l]],i);
end[v]|=end[fail[v]];
q[++r]=son[q[l]][i];
}
else son[q[l]][i]=son[fail[q[l]]][i];//改儿子方便处理
} if(cycle()) { printf("TAK\n");}
else printf("NIE");
return ;
}
/*
3
011
11
00000 */

【BZOJ】2938 [POI2000]病毒(AC自动机)的更多相关文章

  1. BZOJ 2938: [Poi2000]病毒 [AC自动机 拓扑排序]

    2938: [Poi2000]病毒 题意:判断是否存在无限长的不含模式串的字符串.只有01. 建出套路DP的转移图,判断有环就行了 练习一下拓扑排序 #include <iostream> ...

  2. BZOJ.2938.[POI2000]病毒(AC自动机)

    题目链接 \(Description\) 给n个模式串,问是否存在长度无限的主串,使得任何一个模式串都没有在主串中出现. \(Solution\) 先建AC自动机. 假设我们有了一个无限长的安全代码, ...

  3. BZOJ 2938: [Poi2000]病毒

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 693  Solved: 360[Submit][Status][Di ...

  4. BZOJ 2938 [Poi2000]病毒(AC自动机)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2938 [题目大意] 给出一些病毒串,问是否存在不包含任何病毒串的无限长的字符串 [题解 ...

  5. BZOJ [Poi2000]病毒 AC自动机_DFS_细节

    Code: #include<bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin) # ...

  6. [POI2000]病毒 --- AC自动机

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

  7. 【BZOJ2938】[Poi2000]病毒 AC自动机+DFS

    [BZOJ2938][Poi2000]病毒 Description 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码 ...

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

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

  9. BZOJ2938:[POI2000]病毒(AC自动机)

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

  10. 【bzoj2938】[Poi2000]病毒 AC自动机

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

随机推荐

  1. restify构建REST服务(转)

    restify构建REST服务 从零开始nodejs系列文章,将介绍如何利Javascript做为服务端脚本,通过Nodejs框架web开发.Nodejs框架是基于V8的引擎,是目前速度最快的Java ...

  2. iOS 阶段学习第四天笔记(循环)

    iOS学习(C语言)知识点整理笔记 一.分支结构 1.分支结构分为单分支 即:if( ){ } ;多分支 即:if( ){ }else{ }  两种 2.单分支 if表达式成立则执行{ }里的语句:双 ...

  3. flutter笔记1:VScode安装dart code插件踩坑记录

    新手菜鸟一枚,想从产品转入技术坑,目标:移动端APP开发.最近听技术达人 飞狐 说flutter beta发布了,支持跨平台APP开发,各种强大易上手,于是乎零基础入坑~话说想提高英文水平的同学,请移 ...

  4. List connected users–similar to task manager

    class Program { [DllImport("wtsapi32.dll")] static extern IntPtr WTSOpenServer([MarshalAs( ...

  5. 用with来打开文本文件

    with open ('text.txt') as f: for line in f.readlines(): print(line) 这种方法的好处就是如果出了异常也会自动提示报错.

  6. UDP示例

    android学习笔记18--------------UDP示例 分类: android2011-11-10 10:07 848人阅读 评论(0) 收藏 举报 androidbufferexcepti ...

  7. Vim:基础

    Normal模式 即是command “vim test.txt” 时进入的界面. 常用command: :help<Enter>   查看命令. :wq<Enter>     ...

  8. JSP学习(二)JSP指令

    JSP指令 JSP指令(directive)是为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分. JSP指令的基本语法格式:<%@ 指令 属性名= ...

  9. 轻量级KVO[译]

        在这篇文章中,我会实现一个自己用的简单KVO类,我认为KVO非常棒,然而对于我大部分的使用场景来说,有这两个问题: 1. 我不喜欢在observeValueForKeyPath:ofObjec ...

  10. hdu 2461 Rectangles

    求矩形的并 矩形个数 1...20m次询问 回答要求的r个矩形的并容斥原理dfs优化: 遇到面积交为0时 这个dfs分支可以不下去了 #include <iostream> #includ ...