HDU-2896(病毒侵袭)

      还是AC自动机模板题,和上题差不多,只不过此题需要鉴定不止一条字符串,具体做法是一样的,不懂AC自动机的同学可以去百度google一下AC自动机,总之就是用来匹配多个字符串的一种算法,具体步骤是:建立tril树---寻找失败节点(creat_ac_automation这个函数)---遍历字符串就OK了,模板题就不多解释了,不懂可以留言。

题目地址是:http://acm.hdu.edu.cn/showproblem.php?pid=2896
View Code
  1 //====================================================================
  2 //Name       :
  3 //Author     :hxf
  4 //copyright  :http://www.cnblogs.com/Free-rein/
  5 //Description:
  6 //Data       :2012.8.5
  7 //========================================================================
  8 #include<iostream>
  9 #include<algorithm>
 10 #include<stdio.h>
 11 #include<math.h>
 12 #include<string.h>
 13 #include <vector>
 14 #include <stack>
 15 #define MAX 100005
 16 #define inf 1499999999
 17 using namespace std;
 18 const int len=130;
 19 struct Tril{
 20     Tril *fail;
 21     Tril *son[len];
 22     int count;
 23     int num;
 24     Tril(){
 25         fail=NULL;
 26         count=0;
 27         num=0;
 28         memset(son,NULL,sizeof(son));
 29     }
 30 }*tril[1000050];
 31 char virus[1050];
 32 int total;
 33 int n;
 34 char str[100050];
 35 void creat(char* virus,Tril* root,int k)
 36 {
 37     Tril *p=root;
 38     int lenth=strlen(virus);
 39     for(int i=0;i<lenth;i++)
 40     {
 41         int index=virus[i];
 42         if(p->son[index]==NULL)
 43             p->son[index]=new Tril();
 44         p=p->son[index];
 45     }
 46     p->count++;
 47     p->num=k;
 48 }
 49 void creat_ac_automation(Tril *root)
 50 {
 51     int first=0;
 52     int last=0;
 53     root->fail=NULL;
 54     tril[last++]=root;
 55     while(first<last)
 56     {
 57         Tril *p=tril[first++];
 58         Tril *k=NULL;
 59         for(int i=0;i<len;i++)
 60         {
 61             if(p->son[i]!=NULL)
 62             {
 63                 if(p==root)
 64                     p->son[i]->fail=root;
 65                 else
 66                 {
 67                     k=p->fail;
 68                     while(k!=NULL)
 69                     {
 70                         if(k->son[i]!=NULL)
 71                         {
 72                             p->son[i]->fail=k->son[i];
 73                             break;
 74                         }
 75                         k=k->fail;
 76                     }
 77                     if(k==NULL)
 78                     {
 79                         p->son[i]->fail=root;
 80                     }
 81                 }
 82                 tril[last++]=p->son[i];
 83             }
 84         }
 85     }
 86 }
 87 int query(Tril* root,int temp)
 88 {
 89     int vir[1005];
 90     int visit[1005];
 91     memset(visit,0,sizeof(visit));
 92     int viru=0;
 93     int lenth=strlen(str);
 94     int s=-1;
 95     Tril* p=root;
 96     for(int i=0;i<lenth;i++)
 97     {
 98         int index=str[i];
 99         while(p->son[index]==NULL&&p!=root)
100             p=p->fail;
101         p=p->son[index];
102         if(p==NULL)
103             p=root;
104         Tril *k=p;
105         while(k!=root)
106         {
107             if(s==-1&&k->num>0)
108             {
109                 printf("web %d:",temp);
110                 s=0;
111             }
112             if(k->num>0&&visit[k->num]==0)
113             {
114                 vir[viru++]=k->num;
115                 visit[k->num]=1;
116             }
117             k=k->fail;
118         }
119     }
120     sort(vir,vir+viru);
121     for(int i=0;i<viru;i++)
122         printf(" %d",vir[i]);
123     if(s==0)
124     {
125         printf("\n");
126         return 1;
127     }
128     else
129         return -1;
130 }
131 
132 int main()
133 {
134     Tril* root=new Tril();
135     scanf("%d",&n);
136     for(int i=0;i<n;i++)
137     {
138         scanf("%s",virus);
139         getchar();
140         creat(virus,root,i+1);
141     }
142     creat_ac_automation(root);
143     int m;
144     scanf("%d",&m);
145     total=0;
146     for(int i=0;i<m;i++)
147     {
148         scanf("%s",str);
149         getchar();
150         if(query(root,i+1)==1)
151             total++;
152     }
153     printf("total: %d\n",total);
154     return 0;
155 }

 

转载于:https://www.cnblogs.com/Free-rein/archive/2012/08/09/2630176.html

字符编码——简体中文编码中区位码、国标码、内码、外码、字形码的区别及关系 目录区位码国标码(交换码)内码(机内码)区位码、国际码、内码的转换为什么要加上20H为什么加上80H 本文以GB2312为例,讲述区位码、国标码、内码、外码、字形码 区位码 整个GB2312字符集分成94个区,每区有94个位,每个区位上只有一个字符,即每区含有94个汉字或符号,用所在的区和位来对字符进行编码(实际上就是字符编号、码点编号),因此称为区位码。 换言之,GB2312将包括汉字在内的所有字符编入一个94 * 94的二维表,行就是“区”、列就是“位”,每个字符由区、位唯一定位,其对应的区、位编号合并 阅读详情

相关推荐

Unity——Scroll View 滑动居中、居中的放大、其他的缩小(支持横竖Scroll View)

一、效果 二、上代码,两种方式。 (第一种是在Update中用插值完成的,如果不想再项目中看到Update,下面的另一种改了一段用DoTween实现的,需要导入一下DoTween) using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using Unit...

SiReSo 7659

pta 生化危机

人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。 输入格式: 输入第一行为三个正整数,分别表示所有城市个数m(m&...

k的博客 2277

手把手教你用示波器测试DDR5 DRAM信号完整性(附眼图分析技巧)

本文详细介绍了如何使用示波器测试DDR5 DRAM信号完整性,包括眼图分析技巧。从DDR5的核心挑战、测试设备选型到实测工作流程,提供了全面的指导。特别强调了DFE功能验证和系统级协同测试,帮助工程师解决信号完整性问题,提升测试效率。

g2h3i4j5的博客 1155

PTA 7-51 生化危机 (25分) dfs

人类正在经历一场生化危机,许多城市已经被病毒侵袭,这些城市中的人们为了避免感染病毒,计划开车逃往其他没有被病毒入侵的城市(安全城市)。有些城市之间有公路直达,有些没有。虽然他们知道哪些城市是安全的,但是不知道有没有一条安全路径能够到达安全城市(只有该路径上经过的所有城市都是安全的,该路径才是安全路径)。请你编写一个程序帮助他们判断。 输入格式: 输入第一行为三个正整数,分别表示所有城市个数m(m<=100)、安全城市个数n(m<=50)、公路个数k(k<=100)。随后一行给出n个安全城市

马角的逆袭的博客 1595

ESD 防护深度解析:模型、等级、系统设计与防护策略

本文系统阐述了静电放电(ESD)防护的核心技术体系。首先对比分析了HBM(人体模型)和CDM(充电设备模型)两种基础ESD模型的物理特性、测试标准及分级要求,指出相同电压下CDM的破坏性是HBM的15-20倍。其次详细解析了IEC61000-4-2系统级ESD标准,包括接触/空气放电测试方法及判定等级。重点提出了系统级防护的三层架构:空间隔离(≥10mm间距)、电气隔离(地平面分割)和TVS管选型(响应时间<1ns),并对比了MOV、SCR等防护器件特性。针对不同应用场景(消费电子、工业控制等)给出了差异化

bother3000的博客 1884

PG-FP6编程器错误代码解析与高效排障实战指南

在嵌入式系统开发与量产烧录中,编程器是连接开发环境与目标硬件的重要桥梁。其工作原理是通过特定的通信协议(如UART、SWD)与微控制器(MCU)建立连接,完成程序代码的写入、擦除与校验。这项技术的核心价值在于确保固件能够准确、可靠地部署到硬件中,是产品从原型到量产的关键环节。在实际的工程实践中,尤其是在使用瑞萨(Renesas)PG-FP6这类编程器进行调试或批量生产时,工程师常会遇到各种通信失败、编程验证错误或电源异常等问题,这些问题往往以特定的错误代码形式呈现。深入理解这些错误代码背后的硬件连接、电源时

weixin_34387468的博客 580

生化危机 (20 分)

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

Emotion的博客 3557

关于st-link usb communication error的解决方法

一,问题 在MDK5中使用ST-Link下载时出现: st-link usb communication error Error:flash download failed - target dll has been canceled 二,解决过程 通过网上查阅得知大部分方法都是通过更换老版本的固件包以及操作硬件解决,我试了绝大部分方法都不好使,且老版本的包没有找到,于是试着更新一下固件包,但是更...

qq_43557907的博客 3万+

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

Dify社区版多工作空间功能解锁:源码修改与多租户架构解析

多租户架构是现代SaaS平台实现数据隔离与资源管理的核心技术,其核心原理是通过租户模型将用户、应用和数据在逻辑上隔离。在AI应用开发平台中,这种架构能有效支持多团队、多项目并行开发,确保不同业务线的数据安全与独立迭代。Dify作为开源AI应用构建平台,其底层已设计完善的多租户模型,但社区版默认限制了单用户单工作空间。本文通过精准修改两处关键代码——账户初始化逻辑与系统功能开关,释放了平台固有的多工作空间管理能力。该方案无需改动数据库结构,直接利用现有RBAC权限体系,实现了类似企业版的**多租户隔离**体验

weixin_27059669的博客 1062

AI爬虫:一文讲通AI爬虫技术和原理,及34个AI爬虫工具推荐

AI 爬虫 是一种结合了传统网络爬虫技术和人工智能(AI)技术的工具,能够更智能、高效地从网页中提取和处理数据。与传统爬虫相比,AI 爬虫能够更好地处理动态内容、复杂网页结构以及非结构化数据,同时具备数据清洗、分类、情感分析等高级功能。

数据知道的博客 1万+

2012/10/03---生化危机

看了两天的生化危机,表示中了斜了,觉得到处都是丧尸,游戏来的电影虽然剧情上牵强了点儿,不过还是很吸引人滴,休息一下子,当过国庆了,明天继续努力呵。 转载于:https://www.cnblogs.com/programmersong/archive/2012/10/03/2710654.html...

weixin_33724659的博客 227

【LLM评估篇】Ceval | GAIA | MMLU benchmarks

- 一些大模型的评估模型: - 多轮:MTBench - 关注评估:agent bench - 长文本评估:longbench,longeval - 工具调用评估:toolbench - 安全评估:cvalue,safetyprompt等 本文还介绍了其他主流的大模型评估指标等及其使用

发现问题,并解决问题,批判性思维 6947

病毒侵袭(HDU-2896)

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

m0_50796573的博客 433

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

hdu 2896 病毒侵袭

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

parting_soul的专栏 329

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu 2896 病毒侵袭 ac自动机

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

aipiannian6725的博客 208

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU 2896 病毒侵袭

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

weixin_38168198的博客 133

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

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

Sly_461的博客 828

hdu2896 病毒侵袭

题面在这里 题意: 给n个模式串和m个文本串,问有几个文本串包含任意一个模式串,并且输出每个包含任意模式串的文本串,包含的是哪几个模式串。 做法: ac自动机模板。 整天模板题做做还有什么希望(大雾)模板居然调了一个小时 代码: /************************************************************* Probl

juruo? juruo! 340

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

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

code 1160

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自动机 然后数组记录在输出 我日写了半天结果函数没调用 找了半天错误 你要长记性啊 这种错误犯了好几次了啊 笨蛋 #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
上一篇: HDU-3065(病毒侵袭持续中)
下一篇: HDU-2993--MAX Average Problem详解
badao7116
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值