• 题解:

    • 对病毒串建立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. golang--性能测试和分析

    前言 测试分为:压力测试.负载测试.性能测试,功能测试等等,其中在开发过程中开发人员经常要写一些test case unit 自己的模块进行功能测试测和性能.在分析出模块的性能瓶颈后开发人员就需要针对 ...

  2. 学习笔记 | treap | splay

    目录 前言 treap 它的基本操作 前言 不会数据结构选手深深地感受到了来自treap的恶意QwQ 在听的时候感觉自己听得听懂的??大概只是听懂了它的意思 代码是怎么写都感觉写不好╮(╯﹏╰)╭ 菜 ...

  3. podSpec文件相关知识整理

    上一篇文章整理了我用SVN创建私有库的过程,本文将整理一下有关podSpec文件的相关知识. podSpec中spec的全称是“Specification”,说明书的意思.顾名思义,这是用来描述你这个 ...

  4. oraclejdbc

    https://segmentfault.com/q/1010000004952621/a-1020000004955600

  5. Linux基础入门--04

    目录结构及文件基本操作 实验介绍: 1.Linux 的文件组织目录结构. 2.相对路径和绝对路径. 3.对文件的移动.复制.重命名.编辑等操作. 一.Linux 目录结构 在讲 Linux 目录结构之 ...

  6. 仿ArrayList功能的bag类

    仿ArrayList功能的bag类 要想做到能够实现ArrayList功能,首先要有一个能往里填任何类型元素的的空间,但是不能用ArrayList来创建空间,这样这个项目就没有意义,因此,我创建了一个 ...

  7. git 的认识

    简单说,三个概念:远程仓库.本地仓库.本地工作目录.clone是从远程仓库上down下本地仓库+工作目录:本地仓库就是工作目录里.git这个目录commit是把工作目录的修改提交给本地仓库pull把远 ...

  8. nginx配置hls

    备注:本来是想用浏览器播放hls,后来没有成功,最后使用flash播放rtmp的方案.所以下面的配置未使用. 修改/usr/local/nginx/conf/nginx.conf文件内容如下: wor ...

  9. angularJS1笔记-(17)-ng-bind-html指令

    angular不推荐大家在绑定数据的时候绑定html,但是如果你非要这么干也并不是不可以的.举个例子: <!DOCTYPE html> <html lang="en&quo ...

  10. 13种细分类型的TCP重传小结(一张表总结4.4内核所有TCP重传场景)

    具体每种重传类型的wireshark示例解说参考前文 来自为知笔记(Wiz)