hdu2896 病毒侵袭

c++简易病毒程序(dev++) 我们将用dev++制作一个简易病毒。作者本人差点挂了... 阅读详情

病毒侵袭

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4739    Accepted Submission(s): 1226


Problem Description
当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~
但网路上总有那么些网站,开始借着民众的好奇心,打着介绍日食的旗号,大肆传播病毒。小t不幸成为受害者之一。小t如此生气,他决定要把世界上所有带病毒的网站都找出来。当然,谁都知道这是不可能的。小t却执意要完成这不能的任务,他说:“子子孙孙无穷匮也!”(愚公后继有人了)。
万事开头难,小t收集了好多病毒的特征码,又收集了一批诡异网站的源码,他想知道这些网站中哪些是有病毒的,又是带了怎样的病毒呢?顺便还想知道他到底收集了多少带病毒的网站。这时候他却不知道何从下手了。所以想请大家帮帮忙。小t又是个急性子哦,所以解决问题越快越好哦~~
 

Input
第一行,一个整数N(1<=N<=500),表示病毒特征码的个数。
接下来N行,每行表示一个病毒特征码,特征码字符串长度在20—200之间。
每个病毒都有一个编号,依此为1—N。
不同编号的病毒特征码不会相同。
在这之后一行,有一个整数M(1<=M<=1000),表示网站数。
接下来M行,每行表示一个网站源码,源码字符串长度在7000—10000之间。
每个网站都有一个编号,依此为1—M。
以上字符串中字符都是ASCII码可见字符(不包括回车)。
 

Output
依次按如下格式输出按网站编号从小到大输出,带病毒的网站编号和包含病毒编号,每行一个含毒网站信息。
web 网站编号: 病毒编号 病毒编号 …
冒号后有一个空格,病毒编号按从小到大排列,两个病毒编号之间用一个空格隔开,如果一个网站包含病毒,病毒数不会超过3个。
最后一行输出统计信息,如下格式
total: 带病毒网站数
冒号后有一个空格。
 

Sample Input
  
3 aaa bbb ccc 2 aaabbbccc bbaacc
 

Sample Output
  
web 1: 1 2 3 total: 1
 

Source
 

Recommend
gaojie



AC自动机,这次1Y。

#include <stdio.h>
#include <string.h>
#include <queue>
#include <algorithm>
using namespace std;

typedef struct
{
    int fail,word;
    int next[100];
}Tree;

Tree tree[1000005];
char str[10005];
queue <int> q;
int ans[10];
int up,num;

bool cmp(int x,int y)
{
    return x<y;
}

void Add(char *str,int t)
{
    int i,j,now,n;
    now=0;
    n=strlen(str);
    for (i=0;i<n;i++)
    {
        if (tree[now].next[str[i]-30]==-1)
        {
            tree[now].next[str[i]-30]=up;
            tree[up].word=-1;
            memset(tree[up].next,-1,sizeof(tree[up].next));
            up++;
        }
        now=tree[now].next[str[i]-30];
    }
    tree[now].word=t;
}

void BFS()
{
    int i,j,tag,t,p;
    q.push(0);
    while(!q.empty())
    {
        tag=q.front();
        q.pop();
        for (i=0;i<100;i++)
        {
            if (tree[tag].next[i]==-1) continue;
            t=tree[tag].next[i];
            q.push(t);
            if (tag==0)
            {
                tree[t].fail=0;
                continue;
            }
            p=tree[tag].fail;
            while(tree[p].next[i]==-1 && p!=0)
            {
                p=tree[p].fail;
            }
            if (tree[p].next[i]!=-1)
            {
                tree[t].fail=tree[p].next[i];
            }
            else
            {
                tree[t].fail=0;
            }
        }
    }
}

void Count(char *str)
{
    int i,j,n,now,tag;
    n=strlen(str);
    now=0;
    for (i=0;i<n;i++)
    {
        while(tree[now].next[str[i]-30]==-1 && now!=0)
        {
            now=tree[now].fail;
        }
        if (tree[now].next[str[i]-30]!=-1)
        {
            now=tree[now].next[str[i]-30];
        }
        tag=now;
        while(tag!=0)
        {
            if (tree[tag].word!=-1)
            {
                ans[num++]=tree[tag].word;
            }
            tag=tree[tag].fail;
        }
    }
}

int main()
{
    int i,j,n,m,cnt;
    while(scanf("%d",&n)!=EOF)
    {
        up=1;
        memset(tree[0].next,-1,sizeof(tree[0].next));
        for (i=0;i<n;i++)
        {
            scanf("%s",str);
            Add(str,i);
        }
        BFS();
        scanf("%d",&m);
        cnt=0;
        for (i=0;i<m;i++)
        {
            getchar();
            gets(str);
            num=0;
            Count(str);
            if (num==0) continue;
            sort(ans,ans+num,cmp);
            printf("web %d: ",i+1);
            for (j=0;j<num-1;j++)
            {
                printf("%d ",ans[j]+1);
            }
            printf("%d\n",ans[j]+1);
            cnt++;
        }
        printf("total: %d\n",cnt);
    }
    return 0;
}










译码器Multisim电路仿真汇总——硬件工程师笔记 本文详细介绍了74LS139D和74LS138D两种TTL译码器的功能特点及应用。74LS139D是2线-4线译码器,具有低电平有效输出和使能控制功能,常用于地址译码和数据分配。74LS138D是3线-8线译码器,通过3位输入实现8路输出控制,广泛应用于微处理器系统。文中提供了两种芯片的引脚说明、真值表和典型应用电路,并附有硬件工程师笔试面试相关资源链接。这些基础知识对数字电路设计和硬件工程师面试准备具有重要参考价值。 阅读详情

相关推荐

ReportStudio入门教程(四十一) - 固定报表列宽

我们继续上一篇博客,让他看起来

什么是江湖? 3518

一段简单的C/C++病毒源程序

主要是感染C/C++源文件只要编译该段源程序就会使当前目录里的所有.c和.cpp文件感染上病毒,当然如果是没有主函数的源文件就没有作用:思想很简单:插入一段复制自身的代码,而这段代码是将自身的病毒部分传播给同目录下的其它文件。

mycaibo编程 1万+

Photoshop实战技巧(9)——高效去除复杂水印的五种进阶方法

本文详细介绍了Photoshop中高效去除复杂水印的五种进阶方法,包括色阶通道爆破法、频率分离高阶应用、智能填充+手动修复组合拳等专业技巧。针对半透明水印、密集文字水印等复杂场景,提供分步操作指南和实战案例,帮助用户精准去除水印同时保留原始图像细节,大幅提升工作效率。

cake8的博客 961

hdu 2896 病毒侵袭 //AC自动机

<br /> <br />病毒侵袭Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)<br />Total Submission(s): 1621    Accepted Submission(s): 423<br /><br /><br />Problem Description当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有

hqd_acm的专栏 1703

算法 A 求稳健平均值和稳健标准差

文章目录算法原理代码 算法原理 算法 A 来自 GB/T 6379.5。应用此算法计算得到数据平均值和标准差的稳健值。稳健性是估计算法的特点,而不是其产生的估计值的特点,因此严格来说,称由此算法计算的平均值和标准差是稳健的是不确切的。然而,为避免使用繁琐的术语,“稳健均值”和“稳健标准差”应理解为利用稳健算法计算的总体均值和总体标准差的均值估计。 设数据为 xi,i∈(1,2,⋯ ,n)x_i, i\in(1,2,\cdots,n)xi​,i∈(1,2,⋯,n),记稳健平均值为 x∗,s∗x^*, s^*x

zhuo木鸟的博客 9258

永磁同步电机定子槽型设计实战:从梨形槽到矩形槽的NVH优化之路

本文深入探讨了永磁同步电机定子槽型设计在NVH优化中的关键作用,对比了梨形槽与矩形槽的性能差异。通过Ansys Maxwell仿真和实际案例,揭示了矩形槽在提升槽满率、降低电磁噪声方面的优势,并总结了五大设计黄金法则,为电机设计工程师提供了实用指导。

weixin_28740299的博客 494

C++【基础】病毒繁殖

第9分钟时,第5分钟复制出的病毒粒子开始复制新的病毒粒子,因此第9分钟时的病毒总数为7;第10分钟时,第6分钟复制出的病毒。举例来说,第1分钟时有一个病毒粒子,此病毒粒子从第5分钟开始复制新的病毒粒子,因此第5分钟时的病毒数量为2个;某种病毒具有很强的繁殖能力,从病毒粒子出生后的第5分钟开始,每分钟可以复制出一个新的病毒粒子。计算病毒粒子总数,已知第一分钟时出生了一个病毒粒子,假设所有病毒粒子不会自动死亡,请计算第N分钟的病毒总数。粒子开始复制新的病毒粒子,因此第10分钟时的病毒粒子总数为10。

PIA2011的博客 1973

基于IEEE39节点系统的风力发电机组并网改造与稳定性研究

本文研究了基于IEEE39节点系统的风力发电机组并网改造与稳定性问题。首先将系统工作频率从60Hz转换为50Hz,并对同步发电机、变压器、线路和负荷参数进行相应调整。随后将30、32、34、37号节点的同步发电机替换为不同容量的永磁同步发电机(PMSG)和双馈感应发电机(DFIG),详细建立了两种风电机组的数学模型和控制策略。通过Simulink仿真验证,改造后的系统能够稳定运行并满足并网要求。研究成果为大规模风电并网系统仿真提供了参考,对提高电力系统可再生能源消纳能力具有重要意义。

huanghm88的专栏 110

用c++撸一个小病毒

用c++撸一个小病毒

songhy_china的博客 1079

【数据集实例】CMIP6气候模式数据下载-以河东地区为例

以河东地区为例,介绍CMIP6数据下载及处理

WW、forever的博客 4946

【GPFS专题5】---IBM Spectrum Scale (GPFS) 日常运维命令大全

掌握这些命令是有效管理 GPFS 集群的基础。实际生产环境中,建议结合自动化脚本和监控系统(如 IBM Storage Insights)实现高效运维。定期备份配置、监控性能指标,并进行灾备演练,是保障数据安全和系统稳定的关键。

jundao1997的专栏 841

病毒侵袭(HDU-2896)

病毒侵袭(HDU-2896) HDU - 2896 AC自动机模板题 题目详情: ​ 啊是中文的,那就不解释了 ​ 就是关于多个串匹配一个文本串,不过这题的坑真不少!!! 坑:以上字符串中字符都是ASCII码可见字符(不包括回车)。 ​ 要用 vis数组来判断,不能直接 word[i]==1 ​ 输入中的空格不用理会 估计是数据太弱 ​ 要记得排序 这题算是一道模板吧,时间有点仓促,下次好好整理整理 #include <bits/stdc++.h> #define maxn 11000

m0_50796573的博客 433

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 967

hdu 2896 病毒侵袭

题目链接:hdu 2896 病毒侵袭 简单的变形,说来惭愧,弄了我一个下午,始终在Tl和WA和爆内存间徘徊 首先在建立字典树时,要稍微修改,每个单词的末尾记录为该单词的序号,以便在输出在主串中找到哪些单词 第二点变化之处,在询问时,每当找到单词,将它的尾部存的序号存入一个数组进行保存,还要统计出现单词的个数,对后面判断是否有单词出现提供依据 说说我被坑的地方; 第一:中间不要用fill函

parting_soul的专栏 329

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdu 2896 病毒侵袭 ac自动机

1 /* 2 hdu 2896 病毒侵袭 ac自动机 3 从题意得知,模式串中没有重复的串出现,所以结构体中可以将last[](后缀链接)数组去掉 4 last[]数组主要是记录具有相同后缀模式串的末尾节点编号 。本题中主要是计算每一个模式串 5 在主串中有没有出现过,而不是计算出现过多少次,所以将last[]数组省掉.... 6 */ ...

aipiannian6725的博客 208

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

HDU 2896 病毒侵袭

二次联通门 :HDU 2896 病毒侵袭 /* HDU 2896 病毒侵袭 AC自动机 此题太坑啦。。。 用G++交会无限MLE 行尾不输出回车会无限WA。。 写的程序没错 却交了N遍。。 */ #include <cstring...

weixin_38168198的博客 133

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

AC自动机(2)--hdu2896(病毒侵袭)(基础题)

病毒侵袭             Time Limit:1000MS    Memory Limit:32768KB    64bit IO Format:%I64d & %I64u Description

Sly_461的博客 828

HDU 2896 病毒侵袭

HDU 2896 病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Problem Description - 题目描述   当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇...

weixin_30379973的博客 73

HDU 2896 病毒侵袭(AC自动机)

HDU 2896 病毒侵袭(AC自动机) 题意:给你一组模板,然后在给你多个文本,要你去匹配文本,看看每个文本中都出现了哪些模板然后输出即可. 分析:本题的模板不会重复,题目中已说明.        不过本题的字符是所有ASCII码可见字符,所以sigma_size=128. AC代码:

code 1160

HDU 2896 病毒侵袭 AC自动机裸题

题目来源:HDU 2896 病毒侵袭 题意:求文本串中有多少个模式串 并且输出下标 思路:直接ac自动机 然后数组记录在输出 我日写了半天结果函数没调用 找了半天错误 你要长记性啊 这种错误犯了好几次了啊 笨蛋 #include #include #include using namespace std; const int maxn = 10010; char a[maxn];

嗯。 988

hdu 2896 病毒侵袭(ac自动机)

Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~但网路上总有那么些网站,开始借着民众的好奇心,打着介绍日食的旗号,大肆传播病毒。小t不幸成为受害者之一。小t如此生气,他决定要把世界上所有带病毒的网站都找出来。当然,谁都知道这是不可能的...

weixin_30251587的博客 90

hdu 2896 病毒侵袭 (AC自动机)

hdu 2896 病毒侵袭 基础AC自动机

yjCola 524

HDU2896 病毒侵袭 【AC自动机】

HDU2896 病毒侵袭 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开始借着民众的好奇心,打着介绍日食的旗号,大肆传播病毒。小t不幸成为受害者...

weixin_30699741的博客 68

HDU 2896 病毒侵袭

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~ 但网路上总...

忘梦心的博客 452
上一篇: hdu3065 病毒侵袭持续中
下一篇: POJ3264 Balanced Lineup
magicnumber
博客等级 码龄18年 119粉丝 196原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值