POI2000 病毒

不禁令人想起

洛天依吸毒,好像是吸了熊猫烧香

正常的部分

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

示例:
例如如果{011, 11, 00000}为病毒代码段,那么一个可能的无限长安全代码就是010101…。如果{01, 11, 000000}为病毒代码段,那么就不存在一个无限长的安全代码。

任务:
请写一个程序:
1.在文本文件WIR.IN中读入病毒代码;
2.判断是否存在一个无限长的安全代码,存在输出TAK,否则输出NIE;
Ps.luogu上输TAK有五十五分

其实和AC自动机并没多大关系,然而它就是这类。
让我们脑补一下,如果存在这个无限串,那么在对病毒库进行匹配的时候,我们的指针会在AC机上绕圈:
这里写图片描述
我们把失配边(就是fail)、Trie的边认作单向边。顺着之前的思路,如果能够从root走出一个环(环上不能有end节点),则存在这样的串。

另外,如果一个模板串中存在一个危险字串,也就是某个位置fail指针指向一个end节点,那么它之后的节点也都是危险节点:
这里写图片描述
(危险节点已用红色框出

入坑找环的办法:

从根节点开始DFS,不经过危险节点。来到一个新节点时,将新节点入栈并标记,然后接着DFS,直到回到一个在栈中的节点,也就是构成了环。注意,我们不能路过已经到过,但是不在栈中的点,否则环的相接处会出现“病毒”

然后。。。。
上代码:

#include<cstdio>
#include<string>
#include<algorithm>
#include<cstdlib>
#define maxn 33333

using namespace std;

int n,cnt=0,now=0;
short t[maxn][2],q[maxn],f[maxn],v,hed,til;
bool flg[maxn],vis[maxn],in[maxn];
char s[355];

void DFS(
  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2000年,POI数据下载是指在该年下载位置信息(POI)相关数据的行为。POI是指感兴趣点(Point of Interest),即地理位置上具有特殊意义或价值的地点。下载POI数据是为了获取这些特定地点的位置和相关信息,以便用于地图导航、社交媒体、市场研究等领域。 2000年,随着信息技术的快速发展,人们对位置信息的需求也日益增加。下载POI数据成为了一种常见的行为,以便更好地了解和利用周围环境。在这一年,下载POI数据的主要方式是通过互联网进行。 以2000年为例,要下载POI数据,首先需要访问相关的互联网平台或网站,如地图服务提供商、旅行网站或地理信息系统。然后,在相应的界面中,可以选择特定的地理区域、类型的POI,以及数据格式(如CSV、XML或JSON)等。接下来,点击下载按钮或链接,系统将开始传输POI数据到用户的设备上。 下载完成后,用户可以将这些POI数据导入到相应的应用程序或软件中进行进一步的分析和利用。例如,可以基于这些数据开发地图导航应用,帮助用户找到特定的商店、餐厅或景点。同时,还可以将POI数据与其他数据集结合,进行更深入的市场研究,比如确定最佳营销地点或了解消费者的行为模式。 总而言之,2000年的POI数据下载是一种通过互联网获取位置信息的行为,以满足人们对于地理位置和相关信息的需求。这一技术的发展为地图导航、社交媒体和市场研究等领域提供了更多可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值