zoukankan      html  css  js  c++  java
  • [POI2000]病毒 --- AC自动机

    [POI2000]病毒

    题目描述:

    二进制病毒审查委员会最近发现了如下的规律:

    某些确定的二进制串是病毒的代码。

    如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的。

    现在委员会已经找出了所有的病毒代码段,试问,是否存在一个无限长的安全的二进制代码。

    示例:如果{011, 11, 00000}为病毒代码段,

    那么一个可能的无限长安全代码就是010101…。

    如果{01, 11, 000000}为病毒代码段,那么就不存在一个无限长的安全代码。

    任务:请写一个程序:

    读入病毒代码,判断是否存在一个无限长的安全代码;

    输入格式:

    在文本文件WIR.IN的第一行包括一个整数n (n2000) ,表示病毒代码段的数目。

    以下的n行每一行都包括一个非空的01字符串——就是一个病毒代码段。

    所有病毒代码段的总长度不超过30000。

    输出格式:

    输出:

    TAK——假如存在这样的代码;

    NIE——如果不存在。

    非常基础的AC自动机,考验理解。

    能在AC自动机中转移 ---> 可以添加字符

    因此 长度无限的字符串 ---> 能在AC自动机中无限地转移 --> AC自动机中有环

    但注意到一些病毒串无法被匹配;

    将代表病毒串的结尾的节点及其后继fail节点全部打上标记即可。

    代码在此

  • 相关阅读:
    如何快速把 Vue 项目升级到 webpack3
    10分钟学会ES7+ES8
    数组的32场演唱会
    你做的拷贝是真的深拷贝吗
    浅谈CSS模块化
    CORS跨域资源共享你该知道的事儿
    像VUE一样写微信小程序-深入研究wepy框架
    小型Web页打包优化(下)
    PT与PX区别
    px、pt和em的区别
  • 原文地址:https://www.cnblogs.com/reverymoon/p/8864725.html
Copyright © 2011-2022 走看看