病毒侵袭 HDU - 2896(AC自动机数组模拟指针)

C++病毒 都知道我用Python做过病毒,做过很多病毒,但有人知道我用C++也做病毒吗?C++是离操作系统最近的编程语言之一,因此C++的运行速度极快,这也导致了我特别喜欢用C++做病毒。大家有没有玩过一个操作,首先新建一个文本文档,在里面写上start https://www.pranx.com/hacker/,然后把后缀名改成bat?对了,如果你的攻击对象网络不好的话,还可以加一个打开百度。C++里有3中循环:for循环,while循环,do-while循环。这个就是C++打开cmd的代码。 阅读详情

病毒侵袭 HDU - 2896

 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到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

看上去是裸的AC自动机,内存超限超到死,网上一堆博客内存超限都敢往上放

直接用kuangbin的题解了,数组模拟指针当成模板使吧

code:

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

struct Trie
{
    int next[210*500][128],fail[210*500],end[210*500];
    int root,L;
    int newnode()
    {
        for(int i = 0;i < 128;i++)
            next[L][i] = -1;
        end[L++] = -1;
        return L-1;
    }
    void init()
    {
        L = 0;
        root = newnode();
    }
    void insert(char s[],int id)
    {
        int len = strlen(s);
        int now = root;
        for(int i = 0;i < len;i++)
        {
            if(next[now][s[i]] == -1)
                next[now][s[i]] = newnode();
            now=next[now][s[i]];
        }
        end[now]=id;
    }
    void build()
    {
        queue<int>Q;
        fail[root] = root;
        for(int i = 0;i < 128;i++)
            if(next[root][i] == -1)
                next[root][i] = root;
            else
            {
                fail[next[root][i]] = root;
                Q.push(next[root][i]);
            }
        while(!Q.empty())
        {
            int now = Q.front();
            Q.pop();
            for(int i = 0;i < 128;i++)
                if(next[now][i] == -1)
                    next[now][i] = next[fail[now]][i];
                else
                {
                    fail[next[now][i]] = next[fail[now]][i];
                    Q.push(next[now][i]);
                }
        }
    }
    bool used[510];
    bool query(char buf[],int n,int id)
    {
        int len = strlen(buf);
        int now = root;
        memset(used,false,sizeof(used));
        bool flag = false;
        for(int i = 0;i < len;i++)
        {
            now = next[now][buf[i]];
            int temp = now;
            while(temp != root)
            {
                if(end[temp] != -1)
                {
                    used[end[temp]] = true;
                    flag = true;
                }
                temp = fail[temp];
            }
        }
        if(!flag)return false;
        printf("web %d:",id);
        for(int i = 1;i <= n;i++)
            if(used[i])
                printf(" %d",i);
        printf("\n");
        return true;
    }
};
char buf[10010];
Trie ac;
int main()
{
    int n,m;
    while(scanf("%d",&n) != EOF)
    {
        ac.init();
        for(int i = 1;i <= n;i++)
        {
            scanf("%s",buf);
            ac.insert(buf,i);
        }
        ac.build();
        int ans = 0;
        scanf("%d",&m);
        for(int i = 1;i <= m;i++)
        {
            scanf("%s",buf);
            if(ac.query(buf,n,i))
                ans++;
        }
        printf("total: %d\n",ans);
    }
    return 0;
}
c++简易病毒程序(dev++) 我们将用dev++制作一个简易病毒。作者本人差点挂了... 阅读详情

相关推荐

ADS 2013安装教程

1.2013和2014安装过程是一样的,运行ads2013_06_shp_windows文件进行安装 2.点击“NEXT”。 3.选择I accept,然后点击“NEXT”。 4.选择“complete”,然后点击“NEXT”。 5.选择安装路径,最好默认安装路径,安装路径不要有中文,然后点击“NEXT”。 6.点击“NEXT”. 7.如下路径默认安装,然后点击“NEXT”。 8.点击“NEXT”。 ...

谢谢关注“小鱼教你模数电”,各平台同号 6007

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

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

mycaibo编程 1万+

SAP License USMM SLAW2 SAP审计

引言 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安装的SAP系统需要进行测定。 关键字: SAP License、 SAP USMM、 SLAW2、 SAP 账号、SAP 账号审计、 SAP License 审计、 SAP 审计报告、SAP 账号优化 SAP License审计邮件 企业每年都会收到SAP License审计邮件,邮件内容大致就是根据贵公司与SAP签定的合同XXX条款规定,贵公司所安...

感悟人生 2975

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

Steam崩溃:ntdll.dll报错0xc0000374...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1156

手把手教你学simulink(8.3)--实例:基于 Simulink 的自动驾驶汽车速度控制系统设计与仿真

基于 Simulink 的自动驾驶汽车速度控制系统设计与仿真。

MHD0815的博客 1208

用c++撸一个小病毒

用c++撸一个小病毒

songhy_china的博客 1079

基于卷积神经网络的球罐结构损伤识别

球罐结构损伤识别方法研究 摘要:本研究针对球形储罐(球罐)结构健康监测需求,提出基于卷积神经网络(CNN)的损伤识别方法。通过ANSYS有限元仿真构建包含5种裂纹深度的500组振动信号数据集,设计包含卷积层、池化层和全连接层的CNN网络架构。实验结果表明,该方法在训练集和测试集上分别达到98.4%和96.0%的准确率,验证了其在球罐焊缝损伤识别中的有效性。研究提供了完整的MATLAB实现代码,为球罐结构智能化监测提供了技术参考。 关键词:球罐结构;卷积神经网络;损伤识别;振动信号;深度学习

AI的内部世界的博客 120

C++【基础】病毒繁殖

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

PIA2011的博客 1971

基于STM32L4XX、HAL库的BQ27520YZFR-G4 电量监测计驱动程序设计

(可选) -------- TS (Pin 3) 连接温度传感器。(可选) -------- BAT (Pin 2) 连接电池正极。// 假设I2C1已初始化。// 每5秒更新一次。// 短暂延时确保数据准备好。支持Impedance Track™技术,提供高精度电量测量。适用于便携式设备如智能手机、平板电脑等。// 可添加初始化验证代码。// 初始化BQ27520。// 发送控制子命令。// 配置模拟滤波器。// 配置数字滤波器。// I2C1初始化函数。

zhusl6688的博客 244

【100%通过率】华为OD机试真题 C++ 实现【打印机队列】【2022.11 Q4 新题】

有5台打印机打印文件,每台打印机有自己的待打印队列。因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的代先级,其中数字越大优先级越高。打印机会从自己的待打印队列中选择优先级最高的文件来打印。如果存在两个优先级一样的文件,则选择最早进入队列的那个文件。现在请你来模拟这5台打印机的打印过程。

MISAYAONE的博客 9946

HDU2896——病毒侵袭(AC自动机)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2896 Problem Description 当太阳的光辉逐渐被月亮遮蔽,世界失去了光明,大地迎来最黑暗的时刻。。。。在这样的时刻,人们却异常兴奋——我们能在有生之年看到500年一遇的世界奇观,那是多么幸福的事儿啊~~ 但网路上总有那么些网站,开始借着民众的好奇心,打着介绍日食

Vision 315

东北大学计算机预推免(双非友好)

东北大学,个人觉得在985里面对双非比较友好,而且学校的计算机专业实力也比较强,上岸难度不算很大,可以重点关注一下。学校复试审核的时间比较早,拿到复试资格之后,一定要留意报名系统首页中计算机学院的信息,学校也会在全国各地不同时间安排面试,可以根据自己的情况选择一个合适的时间前去面试,并且有对应面试场次的QQ群,信息会在群里面发布。面试成绩会在预推免系统中直接公布,但是是否拟录取不会公布,需要考生自行判断,今年计算机学院录取线定在了86分左右,最终递补下来,好像录取到了84分左右。

D1379951481的博客 3120

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

题目传送门 题意 先给你n个模式串,然后再给你m个主串,问你每个主串中包括前面那几个模式串。 思路 AC自动机的简单变形(套模板稍加修改即可),注意有坑点,他说的是全部可见字符,共128个,而不是我们平常想的就默认那26个字母。(都快坑死了,一直wa… ) AC代码 #include<stdio.h> #include<algorithm> #include<str...

HANGANG的博客 257

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pscad IEEE标准系统搭建说明

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

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

用指针的那个ac自动机的模板做了好几遍,都是内存超限,然后从网上找了个相同模板做的,也是mle,看样子应该是题目的数据更新了。所以就找了个数组模拟指针的模板做的。。。 链接:http://www.cnblogs.com/kuangbin/p/3157240.html#include <stdio.h> #include <string.h> #include <iostream> #include

梦幻的蔷薇色 297

android 蓝牙通讯demo

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

HDU 2896 I - 病毒侵袭 AC自动机 数组模拟

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

Kuguotao的博客 290

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU 2896-病毒侵袭

病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 31514    Accepted Submission(s): 7208 题目连接:点击打开链接 Problem Description

别止的博客 288

hdu2896(病毒侵袭)--AC自动机

过完年了,又回来集训。 年后第一题。 这道题写了一个晚上,可能太久没有写过了,有点生疏了。 最后还是请ztz大神来帮忙看了看。 总结: 1.AC自动机的数组是根据所输入模板的总字符来定。 2.对于tot=1,以及初始化的时候将它的儿子全指向自己都是必须的。 3.对于getans时不了解,就手动模拟。纪念一下!!#include<iostream> #includ

萍水相逢,尽是他乡之客 351

AC自动机训练(16.04.01)

复习了AC自动机,记录几题,虽然有些之前做过,但是这次又写了一遍后感觉有了新的认识(以前写的不好的直接删除了 ^_^)。对了外加一道和AC自动机没有半毛钱关系的模拟题。 hdu 2222 Keywords Search hdu 2896 病毒侵袭 zoj 3228 Searching the String hdu 2778 LCR (模拟题)hdu 2222 Keywords Searchh

theArcticOcean 751

ac自动机 hdu 2896. 病毒侵袭

差点忘了写。一开始RE,因为和之前一样id=str[i]-‘a’. 这里不用减。。。 然后开始Mle,把数组模拟队列改为了队列,然后c++提交#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <cmath> #include <queue> using namespace

bllsll 307

【AC自动机 && 哪些单词在文本中出现】HDU - 2896 病毒侵袭

Step1 Problem: 给你 n 个单词,m 个文本串,对于每个文本串,你需要知道哪些单词在文本串中出现过。最后输出总的文本串有单词出现过的文本串的个数。 Step2 Ideas: 卡内存,字典树不能用链表,需要用数组模拟 Step3 Code: #include&lt;bits/stdc++.h&gt; using namespace std; const i...

ACMer 梁剑锋 的博客 202

AC自动机专题

首先献上模板:http://www.cnblogs.com/E-star/archive/2013/03/08/2950191.html 多模式串匹配: HDU 2222Keywords Search http://acm.hdu.edu.cn/showproblem.php?pid=2222 题意: http://www.cnblogs.com/E-star/archive/2013...

weixin_30293135的博客 97

28、29、30th Training

HNAU 28th Training Problem 第 28次训练                                           2013 /10/07 AM A.字符串   HDU 2296 Ring(AC自动机+DP)  B.dp       zoj 2432 Greatest Common Increasing Subsequence C.数论

程序员的冷浪漫 1201

病毒【题解】

图论AOV拓扑排序

m0_57344422的博客 1110

十二届蓝桥杯C++ 1月 中 高级组试题 第4题 病毒繁殖

参考: 蓝桥杯大赛青少年创意编程C++ 资料集https://blog.youkuaiyun.com/dllglvzhenfeng/article/details/122499560 第十二届蓝桥杯青少年C++中级组1月比赛题目详解https://www.bilibili.com/video/BV1dR4y1x7J8/ C++代码: /* 十二届蓝桥杯C++ 1月 中 高级组试题 第4题 病毒繁殖 */ #include <bits/stdc++.h> using namespace std;

青少年趣味编程 1750

病毒virus(拓扑排序)

题目 描述 有一天,小y突然发现自己的计算机感染了一种病毒!还好,小y发现这种病毒很弱,只是会把文档中的所有字母替换成其它字母,但并不改变顺序,也不会增加和删除字母。 现在怎么恢复原来的文档呢!小y很聪明,他在其他没有感染病毒的机器上,生成了一个由若干单词构成的字典,字典中的单词是按照字母顺序排列的,他把这个文件拷贝到自己的机器里,故意让它感染上病毒,他想利用这个字典文件原来的有序性,找到病毒替换...

zyz_bz的博客 2312
上一篇: Keywords Search HDU - 2222(AC自动机模板)
下一篇: Roman Digits(打表找规律)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值