bzoj2938: [Poi2000]病毒
被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]病毒相关推荐
- [BZOJ2938]:[Poi2000]病毒
题目传送门 题目描述: 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码 ...
- BZOJ2938:[POI2000] 病毒
Description 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码 ...
- BZOJ2938[Poi2000]病毒——AC自动机
题目描述 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的.现在委员会已经找出了所有的病毒代码段,试问,是否 ...
- BZOJ2938: [Poi2000]病毒(AC自动机)
Orz wlp 5min讲完后缀数组 题意 给出$n$个0, 1串 问是否可以构造出一个无限长的字符串使其不包含任意串 Sol 刚开始我试图假装自己不知道这是个AC自动机的题然后来做.发现根本不可能q ...
- BZOJ2938:[Poi2000]病毒
BZOJ2938:[Poi2000]病毒 考虑AC自动机匹配的过程 如果下一个节点是危险节点,我们就不跳到这个节点 如果下一个节点的 fail 是危险节点,我们也不跳到这个节点 这个标记在 getfa ...
- 【BZOJ-2938】病毒 Trie图 + 拓扑排序
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 609 Solved: 318 [Submit][Status][ ...
- 【BZOJ2938】病毒,AC自动机练习
传送门(权限题) 2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 462 Solved: 240 [Submit][S ...
- bzoj 2938: [Poi2000]病毒(AC自动机)
2938: [Poi2000]病毒 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 1085 Solved: 541 [Submit][Status] ...
- BZOJ 2938: [Poi2000]病毒 ACAM
title BZOJ 2938 LUOGU 24444 简化题意: 二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码.如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码 ...
最新文章
- MobileNet_v2
- CEO 赠书 | 讲述创新背后不为人知的故事,改变世界的 Ta 们做对了什么?
- C语言 | C语言中main函数:int main( int argc, char* argv[] ) 中arg和argv参数的解析及调试
- 配置bitnami-redmine自带的Subversion
- Android---- 获取当前应用的版本号和当前android系统的版本号
- weka分类器怎么设置样本类别_【程序喵笔记】小样本学习1.0
- Taro+react开发(33) Super expression must either be null or a function, not undefined
- 东方终焉组审核页可做引导页
- Fiddler内置命令
- RN 开发遇到的问题之传参函数错误Invariant Violation: Maximum update depth exceeded.
- 软考—信息项目管理师(项目立项管理)
- 华为服务器型号分类,解析华为服务器
- htc328d屏幕排线怎么换_HTC T328D中文Recovery刷机教程
- 招商银行笔试题之漂流船问题
- 一步一步搭建Redis + Keepalived主从高可用之Keepalived安装配置(三)
- Google hack语法
- STM32 F105 USB CDC host
- 央妈是怎么印钱的(1)--资产负债表
- QT 中Socket客户端与服务器异常断开后重连
- 鲁大师Q3季度手机报告:性能最强、最流畅手机揭晓!
热门文章
- php 出错处理,PHP 错误处理机制
- java gc full gc_Java中full gc什么意思?
- 联想w540笔记本参数_2020年12月笔记本电脑推荐!联想、惠普、华为笔记本电脑推荐!18款高性价比笔记本电脑推荐!!!...
- jq查找字段忽略html标签,jQuery过滤HTML标签并高亮显示关键字的方法
- 程序如何在两个gpu卡上并行运行_深度学习分布式训练相关介绍 - Part 1 多GPU训练...
- python 修改array_python 基础_ 数组的 增删改查3
- C学习杂记(五)形参实参笔试题
- C语言怎么输出百分号%
- C#| 使用String.Format()方法将小数点前的数字四舍五入
- PUSHAD和POPAD,以及PUSHA和POPA