这个题注意到*为一串合法的病毒串提供了空间,所以对于一串字符串,病毒串的依据是多种的

这时候就需要确定一种构造方法,根据选择空间的变化,显然靠左的要先选

然后就是匹配带?的串,KMP没法匹配,所以只能暴力(其实n^3不应该是正解)

非常难调,没有优美的写法

码:

#include<iostream>
#include<cstdio>
#include<cstring>
char str[1005],ch[555];
int len,len2,lin,n,i,j,k,sp[1005],wz[1005],stz,ndz,cnt,ans,wzcnt;
int main()
{scanf("%s",str);len=strlen(str);stz=-1;for(i=0;i<len;i++){if(str[i]=='*'&&str[i-1]=='*')continue;if(str[i]=='*')++cnt;str[++stz]=str[i];}len=stz+1;scanf("%d",&n);if(cnt==0){for(i=1;i<=n;i++){scanf("%s",ch);len2=strlen(ch);for(j=0;j<len2;j++){if(ch[j]!=str[j]&&(str[j]!='?'))break;}if(j==len&&len==len2)++ans;}}if(cnt>=1){stz=-1;wz[0]=-1;for(j=0;j<len;j++){if(str[j]=='*')wz[++wzcnt]=j;    }wz[++wzcnt]=len;
for(i=1;i<=n;i++)
{scanf("%s",ch);len2=strlen(ch);int o=1,lin=0;//0~1;bool bx=0;if(str[0]=='*')o++,lin++;if(o!=wzcnt)//for(j=0;j<len2;j++) {if(o==1&&j!=0){bx=1;break;   }       for(k=j,lin=wz[o-1]+1;k<len2&&(str[lin]==ch[k]||str[lin]=='?');)++lin,k++;if(lin==wz[o]){o++;lin++;if(lin==wz[wzcnt-1]+1)break;        }}if(lin!=wz[wzcnt-1]+1)bx=1;if(bx==1)continue;if(str[len-1]=='*'){ans++;    }elseif(len2-k>=wz[wzcnt]-wz[wzcnt-1]-1){   for(j=len2-1,k=wz[wzcnt]-1;j>=(len2-(wz[wzcnt]-wz[wzcnt-1]-1))&&(ch[j]==str[k]||str[k]=='?');j--,k--);if(j==(len2-(wz[wzcnt]-wz[wzcnt-1]-1))-1)ans++;}}}printf("%d",n-ans);}

bzoj1966 [AHOI2005]病毒检测 结论+暴力相关推荐

  1. bzoj1966:[AHOI2005]病毒检测

    传送门 我也没想到map如此垃圾,bitset优秀啊 直接trie树上搜索就好了 代码: #include<cstdio> #include<iostream> #includ ...

  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. KMP算法之病毒检测

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

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

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

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

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

  8. 勒索病毒恐难暴力破解 国内比特币平台尚买币潮

    5月12日晚间,WannaCry(又称Wanna Decryptor)蠕虫病毒在全球超过74个国家爆发,已有至少4.5万台机器受到感染,我国部分高校网络系统沦为重灾区,中石油加油站网络支付系统也受到影 ...

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

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

最新文章

  1. 大三下学期第一周总结
  2. 复制内存时检测到可能的io争用条件_这篇高并发服务模型大科普,内部分享时被老大表扬了...
  3. 模拟撞击_模玩资讯:EPOCH 汽车撞击测试用模拟假人与实验车辆
  4. [转]MySQL日志——Undo | Redo
  5. 修复被破坏的 vs 工程设置(续)
  6. 西门子安装未找到ssf文件_V5.3安装时显示NO SSF FILE FOUND对话框,我该怎么解决啊? 谢谢!-工业支持中心-西门子中国...
  7. JEECG社区招募新人啦
  8. 编写Dockerfile的最佳实践
  9. 为啥有的人能受穷,却不能吃苦?
  10. 网络映射连接不上_Mac连接不上无线网络的解决方法
  11. java读取文件 classpath_Java读取Classpath文件
  12. 如何更改计算机时间和日期,如何更改电脑日期?电脑教程:然后修改
  13. 私有化+国产化,这款安全可靠的知识管理系统超赞
  14. numerov算法matlab,常微分方程边值问题
  15. 异步清零和同步清零的区别
  16. 把我给另外一个朋友的炒股劝告发给你一遍,希望你可以得到帮助!
  17. PT100高精度测温电路 AD623+REF3030(转)
  18. C语言实现简易三子棋,支持双人对战,电脑可拦截
  19. 工具集电子书等4G资料免费分享(IT 信安菜鸟入门必备)
  20. 2017MMC智慧出行体验周 Mobile Mobility Connectivity 2017

热门文章

  1. 红橙Darren视频笔记setContentView源码分析 xml加载的过程
  2. Eclipse配置svn
  3. 长庆企业信息化管理课件_会博通浅谈企业档案管理信息化的必要性和优势
  4. combinatorial_identities习题1.1分析与解答
  5. PyCharm双击或默认情况下是插入的输入状态解决方法
  6. RHEL7升级自带Git
  7. python random模块
  8. 【Spark大数据处理】动手写WordCount
  9. ES6语法---解构赋值
  10. mongodb统计函数