被Star_Feel大爷带着做题

明显大力AC机然后找环

本来我一开始想的是先去有另一个病毒为前缀的病毒,结果今天早上写的时候偷懒没写

结果跳fail的时候会跳到中间。。。无语,Star_Feel大爷叫我son或一下now和fail就过了

还有神仙是直接把fail接到儿子的更流弊了。。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std;struct Trie
{int w[2],fail; bool ed;
}tr[31000];int trlen;
char ss[31000];
void insert()
{int now=0; int len=strlen(ss+1);for(int i=1;i<=len;i++){int x=ss[i]-'0';if(tr[now].w[x]==0)tr[now].w[x]=++trlen;now=tr[now].w[x];}tr[now].ed=true;
}
int list[31000];
void bfs()
{int head=1,tail=2;list[1]=0;while(head!=tail){int now=list[head];for(int x=0;x<=1;x++){int son=tr[now].w[x];if(son==0)continue;tr[son].ed|=tr[now].ed;if(now==0)tr[son].fail=0;else{int p=tr[now].fail;while(p!=0&&tr[p].w[x]==0)p=tr[p].fail;tr[son].fail=tr[p].w[x];tr[son].ed|=tr[tr[son].fail].ed;}list[tail++]=son;}head++;}
}//------------------------AC---------------------------------------int v[31000];
bool dfs(int now)
{if(tr[now].ed==true)return false;if(v[now]>=0)return v[now];v[now]=1;for(int x=0;x<=1;x++){int p=now;while(p!=0&&tr[p].w[x]==0)p=tr[p].fail;if(dfs(tr[p].w[x]))return true;}v[now]=0;return false;
}
int main()
{freopen("a.in","r",stdin);freopen("a.out","w",stdout);int n;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%s",ss+1), insert();bfs();memset(v,-1,sizeof(v));if(dfs(0))printf("TAK\n");else printf("NIE\n");return 0;
}

转载于:https://www.cnblogs.com/AKCqhzdy/p/9727457.html

bzoj2938: [Poi2000]病毒相关推荐

  1. [BZOJ2938]:[Poi2000]病毒

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

  2. BZOJ2938:[POI2000] 病毒

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

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

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

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

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

  5. BZOJ2938:[Poi2000]病毒

    BZOJ2938:[Poi2000]病毒 考虑AC自动机匹配的过程 如果下一个节点是危险节点,我们就不跳到这个节点 如果下一个节点的 fail 是危险节点,我们也不跳到这个节点 这个标记在 getfa ...

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

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

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

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

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

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

  9. BZOJ 2938: [Poi2000]病毒 ACAM

    title BZOJ 2938 LUOGU 24444 简化题意: 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码 ...

最新文章

  1. MobileNet_v2
  2. CEO 赠书 | 讲述创新背后不为人知的故事,改变世界的 Ta 们做对了什么?
  3. C语言 | C语言中main函数:int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
  4. 配置bitnami-redmine自带的Subversion
  5. Android---- 获取当前应用的版本号和当前android系统的版本号
  6. weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0
  7. Taro+react开发(33) Super expression must either be null or a function, not undefined
  8. 东方终焉组审核页可做引导页
  9. Fiddler内置命令
  10. RN 开发遇到的问题之传参函数错误Invariant Violation: Maximum update depth exceeded.
  11. 软考—信息项目管理师(项目立项管理)
  12. 华为服务器型号分类,解析华为服务器
  13. htc328d屏幕排线怎么换_HTC T328D中文Recovery刷机教程
  14. 招商银行笔试题之漂流船问题
  15. 一步一步搭建Redis + Keepalived主从高可用之Keepalived安装配置(三)
  16. Google hack语法
  17. STM32 F105 USB CDC host
  18. 央妈是怎么印钱的(1)--资产负债表
  19. QT 中Socket客户端与服务器异常断开后重连
  20. 鲁大师Q3季度手机报告:性能最强、最流畅手机揭晓!

热门文章

  1. php 出错处理,PHP 错误处理机制
  2. java gc full gc_Java中full gc什么意思?
  3. 联想w540笔记本参数_2020年12月笔记本电脑推荐!联想、惠普、华为笔记本电脑推荐!18款高性价比笔记本电脑推荐!!!...
  4. jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
  5. 程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...
  6. python 修改array_python 基础_ 数组的 增删改查3
  7. C学习杂记(五)形参实参笔试题
  8. C语言怎么输出百分号%
  9. C#| 使用String.Format()方法将小数点前的数字四舍五入
  10. PUSHAD和POPAD,以及PUSHA和POPA