bzoj1966:[AHOI2005]病毒检测
传送门
我也没想到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]病毒检测相关推荐
- bzoj1966 [AHOI2005]病毒检测 结论+暴力
这个题注意到*为一串合法的病毒串提供了空间,所以对于一串字符串,病毒串的依据是多种的 这时候就需要确定一种构造方法,根据选择空间的变化,显然靠左的要先选 然后就是匹配带?的串,KMP没法匹配,所以只能 ...
- BZOJ1966 VIRUS病毒检测
目录 BZOJ1966 VIRUS病毒检测 题解 code BZOJ1966 VIRUS病毒检测 题目传送门 题解 一道比较神的\(Dp\),首先我们记\(f[i][j]\)表示模板串匹配到第\(i\ ...
- BZOJ1966: [Ahoi2005]VIRUS 病毒检测
BZOJ1966: [Ahoi2005]VIRUS 病毒检测 Description 科学家们在Samuel星球上的探险仍在继续. 非常幸运的,在Samuel星球的南极附近,探险机器人发现了一个巨大的 ...
- 1966: [Ahoi2005]VIRUS 病毒检测
1966: [Ahoi2005]VIRUS 病毒检测 Time Limit: 3 Sec Memory Limit: 64 MB Submit: 360 Solved: 143 [Submit][ ...
- PHP文件在线检测病毒,VIRSCAN 在线病毒检测客户端
/**** 本程序以及提供的源码仅供技术交流使用. 作者不作任何类型担保,在任何情况下都不对使用本软件造成的任何损失或任何相应而生. 间接.附带的损失承担任何责任. ****/importwin.ui ...
- 基于深度学习的病毒检测技术无需沙箱环境,直接将样本文件转换为二维图片,进而应用改造后的卷积神经网络 Inception V4 进行训练和检测...
话题 3: 基于深度学习的二进制恶意样本检测 分享主题:全球正在经历一场由科技驱动的数字化转型,传统技术已经不能适应病毒数量飞速增长的发展态势.而基于沙箱的检测方案无法满足 APT 攻击的检测需求,也 ...
- 马斯克再次进行新冠病毒检测 预计今天出结果
11月15日消息,特斯拉CEO埃隆·马斯克周六时间表示,自己"很有可能"感染了中等程度的新冠肺炎,但继续对测试的准确性表示怀疑,称"不同实验室的结果大相径庭". ...
- 互联网奠基人:温顿·瑟夫自曝新冠病毒检测呈阳性
By 超神经 场景描述:互联网奠基人之一:温顿·瑟夫(Vinton G. Cerf) ,3 月 30 日在自己的推特上发布自己冠状病毒检测呈阳性. 关键词:新冠病毒 TCP/IP TCP/IP 协议 ...
- KMP算法之病毒检测
什么是KMP算法? KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特--莫里斯--普拉特操作(简称KMP算法).KMP ...
最新文章
- 二叉树的遍历(递归与非递归)
- 外汇呼叫中心如何在严格监管中存续
- 阿里团队高效沟通的秘密,全在这5点!
- db2数据备份到mysql_DB2数据库自动备份详解
- 每天进步一点点《SVD用于压缩》
- 英语中正式和休闲的打招呼_6
- 对象创建的过程 java_Java 对象创建过程
- python静态方法_Python静态方法
- [tensorflow]tensorflow 2.1 函数API(The Functional API)
- Today Take a Look at Nike's Valentine's Day Sneakers
- python3.6.5 安装第三方库
- EF Code First学习笔记 初识Code First
- 字符串处理(六)atoi、atof、atol和atoll
- 读芯术python讲得怎么样_最读网 - 看是用眼,读是用心!
- 服务器通过无线modem接入4g网络,24-4G Modem管理配置
- OSChina 周一乱弹 —— 今天下班带你去放松咧
- 蓝牙规范-Vol 6:低功耗控制器 Part B 链路层规范 章节1 概述
- python for循环流程图_python流程图
- ROS2 基础概念 参数
- fixed脱离文档流 不占位置