• 题解:

    • 对病毒串建立ac自动机;
    • 有一个无限长的串等价于可以一直在自动机上匹配,等价于自动机上的转移有环;
    • 当然前提是去掉病毒节点的fail子树;
    • 写一个dfs记录是否在栈中,来过没有找到就不必再来了再记录一个vis保证复杂度;
    • 然而。。。。。。我在找环的时候呆了很久,最后写了tarjan;
    • 如果你也是有些tarjan的危险想法的话注意特判转移的自环的情况;
  •  #include<bits/stdc++.h>
    using namespace std;
    const int N=;
    int n,sz,ch[N][],fl[N],que[N],head,tail,vis[N],hd[N],o,dfn[N],idx,low[N],fg,del[N];
    struct Edge{int v,nt;}E[N<<];
    char s[N];
    void adde(int u,int v){
    if(u==v)fg=;
    E[o]=(Edge){v,hd[u]};hd[u]=o++;
    }
    void get_fl(){
    for(int i=;i<;i++)if(ch[][i]){
    que[++tail]=ch[][i];
    if(!vis[ch[][i]])adde(,ch[][i]);
    }else {fg=;return;}
    while(head<tail){
    int u=que[++head];
    for(int i=;i<;i++){
    int&v=ch[u][i];
    if(!v){
    v=ch[fl[u]][i];
    if(!vis[v])adde(u,v);
    continue;
    }
    fl[v]=ch[fl[u]][i];
    vis[v]|=vis[fl[v]];
    if(!vis[v])adde(u,v);
    que[++tail]=v;
    }
    }
    }
    void tarjan(int u){
    if(fg)return ;
    que[++head]=u;
    dfn[u]=low[u]=++idx;
    for(int i=hd[u];~i;i=E[i].nt){
    int v=E[i].v;
    if(!dfn[v])tarjan(v),low[u]=min(low[u],low[v]);
    else if(!del[v])low[u]=min(low[u],dfn[v]);
    }
    if(dfn[u]==low[u]){
    int cnt=,v;
    do{
    cnt++;
    del[v=que[head--]]=;
    }while(v!=u);
    if(cnt > )fg=;
    }
    }
    int main(){
    // freopen("bzoj2938.in","r",stdin);
    // freopen("bzoj2938.out","w",stdout);
    memset(hd,-,sizeof(hd));
    scanf("%d",&n);
    for(int i=;i<=n;i++){
    scanf("%s",s+);
    int len=strlen(s+),u=;
    for(int j=;j<=len;j++){
    if(!ch[u][s[j]-''])ch[u][s[j]-'']=++sz;
    u=ch[u][s[j]-''];
    }
    vis[u]=;
    }
    get_fl();
    head=;tarjan();
    if(fg)puts("TAK");else puts("NIE");
    return ;
    }

    bzoj2938

【bzoj2938】【Poi2000】病毒的更多相关文章

  1. [bzoj2938][Poi2000]病毒_AC自动机

    病毒 bzoj-2938 Poi-2000 题目大意:给你n个01串,问是否存在一个无限长的01串使得这个01的任意子串都不等于给出的01串. 注释:All_length<=30,000 想法: ...

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

    2938: [Poi2000]病毒 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 1678  Solved: 849[Submit][Status][D ...

  3. BZOJ2938 [Poi2000]病毒 和 BZOJ5261 Rhyme

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

  4. bzoj2938: [Poi2000]病毒

    建AC自动机,把所有病毒的节点都删掉,dfs判有没有环,有环就找得到. #include <iostream> #include <cstdio> #include <c ...

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

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

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

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

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

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

  8. BZOJ2938 POI2000病毒

    我们不能让重复过的字串出现在无限串上(就叫这个了...) 也就是要自动机一直能匹配但就是匹配不到,那么就是在自动机上找一个环. dfs判环即可.注意是个有向图. #include<bits/st ...

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

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

  10. 【BZOJ-2938】病毒 Trie图 + 拓扑排序

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

随机推荐

  1. php从入门到放弃系列-04.php页面间值传递和保持

    php从入门到放弃系列-04.php页面间值传递和保持 一.目录结构 二.两次页面间传递值 在两次页面之间传递少量数据,可以使用get提交,也可以使用post提交,二者的区别恕不赘述. 1.get提交 ...

  2. nodejs 搭建自己的简易缓存cache管理模块

    http://www.infoq.com/cn/articles/built-cache-management-module-in-nodejs/ 为什么要搭建自己的缓存管理模块? 这个问题其实也是在 ...

  3. Python字典 (dict)

    作者博文地址:http://www.cnblogs.com/spiritman/ 字典是Python语言中唯一的映射类型.字典对象是可变的,它是一个容器类型,支持异构.任意嵌套. 创建字典 语法:{k ...

  4. Javascript toString()、toLocaleString()、valueOf()三个方法的区别

    Array.Boolean.Date.Number等对象都具有toString().toLocaleString().valueOf()三个方法,那这三个方法有什么区别??? 一.JS Array 例 ...

  5. Leetcode题库——15.三数之和

    @author: ZZQ @software: PyCharm @file: threeSum.py @time: 2018/10/6 19:47 说明:给定一个包含 n 个整数的数组 nums,判断 ...

  6. 在dell服务器上装windows server 2012详细解析

    壹: 首先确定磁盘阵列的问题,在dell服务器开机后按住 Ctrl+R 或者 F2 会展开虚拟磁盘创建菜单 详细步骤可以查看:https://jingyan.baidu.com/article/915 ...

  7. 5G时代

    电信语音承载在CDMA2G网络--所以2G基本没有网络 网络走fdd4g 如果5G时代来临,4g网络可能就会像3G一样的慢

  8. 软工网络15团队作业4——敏捷冲刺日志的集合贴(Alpha阶段)

    Alpha阶段 第 1 篇 Scrum 冲刺博客 第 2 篇 Scrum 冲刺博客 第 3 篇 Scrum 冲刺博客 第 4 篇 Scrum 冲刺博客 第 5 篇 Scrum 冲刺博客 第 6 篇 S ...

  9. dotTrace快速帮助你定位C#代码的性能瓶颈

    dotTrace 1.     问题描述 IIS发布的接口运行一段时间后变的很慢,重启IIS连接池后问题得到解决,但是运行一段时间后再次出现变慢的问题 2.     问题原因 程序中有读取xml文件的 ...

  10. [转帖]中国SaaS死或生之一:“网红”CRM的大起大落

    中国SaaS死或生之一:“网红”CRM的大起大落   http://www.cniteyes.com/archives/33709   文章摘要:从“大众情人”到被人遗弃,如何从CRM身上审视中国Sa ...