传送门

我也没想到map如此垃圾,bitset优秀啊
直接trie树上搜索就好了
代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<bitset>
#include<queue>
using namespace std;
void read(int &x) {char ch; bool ok;for(ok=0,ch=getchar(); !isdigit(ch); ch=getchar()) if(ch=='-') ok=1;for(x=0; isdigit(ch); x=x*10+ch-'0',ch=getchar()); if(ok) x=-x;
}
#define rg register
const int maxn=1010,mod=1e4;
struct oo{int x;short y;};queue<oo>q;bitset<maxn>mp[250010];bool ed[250010];
int n,m,rt=1,id=1,ch[250010][5];char s[maxn],ss[510];short w[500],ans;
void insert(char *s,int d)
{int len=strlen(s+1);rt=1;for(rg int i=1;i<=len;i++){int now=w[s[i]];if(!ch[rt][now])ch[rt][now]=++id;rt=ch[rt][now];}ed[rt]=1;
}
void bfs()
{q.push((oo){1,0});mp[1][0]=1;while(!q.empty()){oo x=q.front();q.pop();if(ed[x.x]&&x.y==m){ans++;continue;}if(w[s[x.y+1]]&&ch[x.x][w[s[x.y+1]]]&&!mp[ch[x.x][w[s[x.y+1]]]][x.y+1]){q.push((oo){ch[x.x][w[s[x.y+1]]],x.y+1}),mp[ch[x.x][w[s[x.y+1]]]][x.y+1]=1;continue;}if(s[x.y+1]=='?')for(rg int i=1;i<=4;i++){if(ch[x.x][i]&&!mp[ch[x.x][i]][x.y+1])q.push((oo){ch[x.x][i],x.y+1}),mp[ch[x.x][i]][x.y+1]=1;}if(s[x.y+1]=='*'){for(rg int i=1;i<=4;i++)if(ch[x.x][i]&&!mp[ch[x.x][i]][x.y])q.push((oo){ch[x.x][i],x.y}),mp[ch[x.x][i]][x.y]=1;if(!mp[x.x][x.y+1])q.push((oo){x.x,x.y+1}),mp[x.x][x.y+1]=1;}}
}
int main()
{scanf("%s",s+1),m=strlen(s+1),read(n);w['A']=1,w['G']=2,w['C']=3,w['T']=4;for(rg int i=1;i<=n;i++)scanf("%s",ss+1),insert(ss,i);bfs();printf("%d\n",n-ans);
}

转载于:https://www.cnblogs.com/lcxer/p/10438701.html

bzoj1966:[AHOI2005]病毒检测相关推荐

  1. bzoj1966 [AHOI2005]病毒检测 结论+暴力

    这个题注意到*为一串合法的病毒串提供了空间,所以对于一串字符串,病毒串的依据是多种的 这时候就需要确定一种构造方法,根据选择空间的变化,显然靠左的要先选 然后就是匹配带?的串,KMP没法匹配,所以只能 ...

  2. BZOJ1966 VIRUS病毒检测

    目录 BZOJ1966 VIRUS病毒检测 题解 code BZOJ1966 VIRUS病毒检测 题目传送门 题解 一道比较神的\(Dp\),首先我们记\(f[i][j]\)表示模板串匹配到第\(i\ ...

  3. BZOJ1966: [Ahoi2005]VIRUS 病毒检测

    BZOJ1966: [Ahoi2005]VIRUS 病毒检测 Description 科学家们在Samuel星球上的探险仍在继续. 非常幸运的,在Samuel星球的南极附近,探险机器人发现了一个巨大的 ...

  4. 1966: [Ahoi2005]VIRUS 病毒检测

    1966: [Ahoi2005]VIRUS 病毒检测 Time Limit: 3 Sec  Memory Limit: 64 MB Submit: 360  Solved: 143 [Submit][ ...

  5. PHP文件在线检测病毒,VIRSCAN 在线病毒检测客户端

    /**** 本程序以及提供的源码仅供技术交流使用. 作者不作任何类型担保,在任何情况下都不对使用本软件造成的任何损失或任何相应而生. 间接.附带的损失承担任何责任. ****/importwin.ui ...

  6. 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测...

    话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...

  7. 马斯克再次进行新冠病毒检测 预计今天出结果

    11月15日消息,特斯拉CEO埃隆·马斯克周六时间表示,自己"很有可能"感染了中等程度的新冠肺炎,但继续对测试的准确性表示怀疑,称"不同实验室的结果大相径庭". ...

  8. 互联网奠基人:温顿·瑟夫自曝新冠病毒检测呈阳性

    By 超神经 场景描述:互联网奠基人之一:温顿·瑟夫(Vinton G. Cerf) ,3 月 30 日在自己的推特上发布自己冠状病毒检测呈阳性. 关键词:新冠病毒  TCP/IP TCP/IP 协议 ...

  9. KMP算法之病毒检测

    什么是KMP算法? KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特--莫里斯--普拉特操作(简称KMP算法).KMP ...

最新文章

  1. 二叉树的遍历(递归与非递归)
  2. 外汇呼叫中心如何在严格监管中存续
  3. 阿里团队高效沟通的秘密,全在这5点!
  4. db2数据备份到mysql_DB2数据库自动备份详解
  5. 每天进步一点点《SVD用于压缩》
  6. 英语中正式和休闲的打招呼_6
  7. 对象创建的过程 java_Java 对象创建过程
  8. python静态方法_Python静态方法
  9. [tensorflow]tensorflow 2.1 函数API(The Functional API)
  10. Today Take a Look at Nike's Valentine's Day Sneakers
  11. python3.6.5 安装第三方库
  12. EF Code First学习笔记 初识Code First
  13. 字符串处理(六)atoi、atof、atol和atoll
  14. 读芯术python讲得怎么样_最读网 - 看是用眼,读是用心!
  15. 服务器通过无线modem接入4g网络,24-4G Modem管理配置
  16. OSChina 周一乱弹 —— 今天下班带你去放松咧
  17. 蓝牙规范-Vol 6:低功耗控制器 Part B 链路层规范 章节1 概述
  18. python for循环流程图_python流程图
  19. ROS2 基础概念 参数
  20. fixed脱离文档流 不占位置

热门文章

  1. js 获取如何鼠标滑词?
  2. 再谈 宝洁经典八大问
  3. SU-03t的烧入教程
  4. 迷宫救人——DFS小题
  5. mediumtext_【紧急求助】关于mediumtext类型数据的调用
  6. c语言二维数组行和列怎么看,二维数组行列怎么看
  7. CSDN被盗号,博文全乱了。。。
  8. 叮咚,你的耳鼻喉专科医院营销策略快来查收
  9. 排序算法8——基数排序
  10. The server encountered an internal error that prevented it from fulfilling this request 的解决方法