hnu 病毒

2024-02-08 01:32
文章标签 病毒 hnu

本文主要是介绍hnu 病毒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

病毒
Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:32768KB
Total submit users: 36, Accepted users: 19
Problem 10104 : No special judgement
Problem description
二进制病毒审查委员会最近发现了如下的规律:某些确定的二进制串是病毒的代码。如果某段代码中不存在任何一段病毒代码,那么我们就称这段代码是安全的。现在委员会已经找出了所有的病毒代码段,试问,是否存在一个无限长的安全的二进制代码。例如如果{011, 11, 00000}为病毒代码段,那么一个可能的无限长安全代码就是010101…。如果{01, 11, 000000}为病毒代码段,那么就不存在一个无限长的安全代码。任务:请写一个程序:读入病毒代码;判断是否存在一个无限长的安全代码;将结果输出。
Input
第一行包括一个整数n,表示病毒代码段的数目。以下的n行每一行都包括一个非空的01字符串——就是一个病毒代码段。所有病毒代码段的总长度不超过30000。
Output
输出一个单词:TAK——假如存在这样的代码;NIE——如果不存在
Sample Input
3
01
11
00000
Sample Output
NIE
Problem Source
SDOI
Submit  Discuss  Judge Status Problems Ranklist 



AC自动机+判环

思路:题目给出了最多3w个节点,采用 dfs 判环,在第一次搜到的时候标号为1,然后回溯的时候标号为-1,如果遇到1的节点就说明有环,标号为0表示还没有遍历到的点,这个思路是问的队友的


#include <cstdlib>
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>using namespace std;const int NODE=30010;
int chd[NODE][2],word[NODE],fail[NODE],sz;
char s[NODE];void ins(char *s)
{int p=0;for(;*s;s++){int id=*s-'0';if(!chd[p][id]){memset(chd[sz],0,sizeof(chd[sz]));word[sz]=0;chd[p][id]=sz++;}p=chd[p][id];}word[p]=1;
}
void ac()
{queue<int> q;if(chd[0][0]) q.push(chd[0][0]),fail[chd[0][0]]=0;if(chd[0][1]) q.push(chd[0][1]),fail[chd[0][1]]=0;for(;!q.empty();q.pop()){int p=q.front();for(int i=0;i<2;i++)if(chd[p][i]){q.push(chd[p][i]);fail[chd[p][i]]=chd[fail[p]][i];word[chd[p][i]]|=word[fail[chd[p][i]]];}else chd[p][i]=chd[fail[p]][i];}
}int dfn[NODE],index;bool dfs(int u)
{dfn[u]=1;for(int i=0;i<2;i++){int v=chd[u][i];if(word[v]) continue;if(dfn[v]==1) return 1;if(dfn[v]==0&&dfs(v)) return 1;}dfn[u]=-1;return 0;
}
int main()
{int n;while(scanf("%d",&n)==1){memset(chd[0],0,sizeof(chd[0]));sz=1;for(int i=0;i<n;i++){scanf("%s",s);ins(s);}ac();bool ok=0;memset(dfn,0,sizeof(dfn));index=1;for(int i=0;i<sz;i++)if(!dfn[i]&&dfs(i)) { ok=1;break; }puts(ok?"TAK":"NIE");}return 0;
}


这篇关于hnu 病毒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/689543

相关文章

HNU-2023电路与电子学-实验3

写在前面: 一、实验目的 1.了解简易模型机的内部结构和工作原理。 2.分析模型机的功能,设计 8 重 3-1 多路复用器。 3.分析模型机的功能,设计 8 重 2-1 多路复用器。 4.分析模型机的工作原理,设计模型机控制信号产生逻辑。 二、实验内容 1.用 VERILOG 语言设计模型机的 8 重 3-1 多路复用器; 2.用 VERILOG 语言设计模型机的 8 重 2-1 多

Win8下如何快速查找和删除电脑中的病毒

Win8系统如何查找和删除病毒?检查你的电脑是否存在病毒的一种快速方法是使用 Windows Defender. 此恶意软件防护随 Windows 提供,可帮助识别和删除病毒、间谍软件和其他恶意软件。   注意:如果你使用的是 Windows RT,则 Windows Defender 会始终启用,并且不能关闭。   如果你使用的是 Windows 8,则可以根据自己的喜好运行由其他

解决解压缩时的错误提示 “无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件“

近期, 有一些朋友反馈在解压zip压缩包, 或者在安装软件的过程中出现了下面的错误提示: "无法成功完成操作, 因为文件包含病毒或者潜在垃圾文件" "Operation did not complete successfully because the file contains a virus or potentially unwanted software" 上述错误一般

HNU-2023电路与电子学-实验1

写在前面: 这是电路与电子学课程的第一次实验,按照指导书的需求在Multisim软件搭建一个电路传感器模型,难度较小,细心完成就没有问题。 小tips:22级实验是采用上传到测试平台来进行功能检测,如果不通过则会打回修改后再重新提交,(我们那时候的评测系统特别特别慢,一次只能测一个同学,剩下同学就排队等着,久的时候甚至超过10个小时),这里列举一个常见的错误:热噪声有+号这端需要连接有源滤波器

筑牢数字防线:深信达MCK与SPN软件的勒索病毒防护策略

# 防勒索病毒:深信达的MCK主机加固软件与SPN安全上网软件的防护策略 在数字化时代,勒索病毒已成为企业和个人用户面临的严峻挑战。这些恶意软件通过加密用户数据并要求支付赎金来解锁,给受害者带来了巨大的经济损失和数据安全风险。深信达科技有限公司,作为网络安全领域的先行者,推出了MCK主机加固软件和SPN安全上网软件,这两款产品在防止勒索病毒攻击方面发挥着重要作用。本文将探讨这两款软件如何协同工作

随机算法 - HNU 13348 Finding Lines

Finding Lines Problem's Link:  http://acm.hnu.cn/online/?action=problem&type=show&id=13348&courseid=0   Mean:  给你平面上1e5个点,让你判断是否可以找到一条直线,使得p%的点都在这条直线上。 analyse: 经典的随机算法题。 每次随机出两个点,

【HDU】3065 病毒侵袭持续中 AC自动机

病毒侵袭持续中 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5766    Accepted Submission(s): 2028 Problem Description 小t非常感谢大家帮忙解决了他的上一个

【HDU】2896 病毒侵袭 AC自动机

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 10087    Accepted Submission(s): 2612 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光

zeus病毒应急响应

目录 介绍步骤 介绍 Zeus病毒,也叫Zbot病毒,是一种具有高潜伏性的木马病毒,受影响系统为微软Windows,主要被用来盗窃用户银行信息。 Zeus最早于2007年被发现,当时它被用来盗取美国某公司的资料信息。到2009年,Zeus病毒进入全面爆发阶段。据统计,单单在美国,就有超过三百六十万的主机在2009年感染Zeus。保守估计,至少造成了七千万美元的损失。 Zeu

HNU OS实验九

本内容针对湖南大学特色os实验前言 — os2024 lab 文档