【字符串匹配】漏洞和补丁
来源:互联网 发布:软件开发创业方向 编辑:程序博客网 时间:2024/06/11 09:37
第一题 漏洞和补丁
背景
ICG模拟赛开始了!
由FF博士带领的团队要开始准备ICG模拟赛了,但他们发现机房的电脑有很多漏洞。
为了修补漏洞,只有下载各种补丁。 但是由于这些漏洞太过久远,不一定能找到能够修复漏洞的补丁。
以下有n个漏洞和m个补丁,用字符串表示。
若其中一个漏洞被一个补丁包含或包含一个补丁则认为这是一个可以被修复的漏洞。
(不区分大小写,一个补丁可以修复多个漏洞,一个漏洞只能被修复一次)
输出能被修复的漏洞总数。
输入格式:
第一行,两个整数n,m;
第2行到第N+1行,表示漏洞的名称;
接下来M行表示能下载到的各个补丁的名称。
输出格式
1个整数,表示能被修复的漏洞总数。
输入样例
3 3
Abc
DGFYJJa
ICG2010
aBCd
YHDajfje
ICG
输出样例
2
样例解释:
漏洞是
Abc
DGFYJJa
ICG2010
补丁是:
aBCd
YHDajfje
IcG
其中1号漏洞Abc被aBCd包含,可修复。3号漏洞ICG2010包含IcG.所以有2个漏洞可以被修复。
(可能会出现同名的补丁或漏洞。)
数据范围:
对于每个给出的漏洞和补丁,长度不超过256;
对于100%的数据,m,n<=100
傻了,写了kmp,浪费了时间。
因为n和m写反而wa80,悲剧。
注意一个漏洞只能修复一次。
#include <cstdio>#include <cstring>long next[300];void next_init(char a[300]){long k = 0;long j = 1;long lena = strlen(a+1);while (j < lena+1){if (k==0 || a[j]==a[k]){j ++; k ++;next[j] = k;}elsek = next[k];}}bool kmp(char a[300],char b[300]){long i = 1;long j = 1;long lena = strlen(a+1);long lenb = strlen(b+1);while (i<lena+1 && j<lenb+1){if (j==0 || a[i]==b[j]){i ++; j ++;}elsej = next[j];if (j > lenb){return true;}}return false;}bool hash[110];char a[110][300];char b[110][300];int main(){freopen("patch.in","r",stdin);freopen("patch.out","w",stdout);long n,m;scanf("%ld%ld",&n,&m);for (long i=1;i<n+1;i++){scanf("%s",a[i]+1);long tmp = 0;while (a[i][++tmp])if (a[i][tmp]<='Z'&&a[i][tmp]>='A')a[i][tmp] += 32;}for (long i=1;i<m+1;i++){scanf("%s",b[i]+1);long tmp = 0;while (b[i][++tmp])if (b[i][tmp]<='Z'&&b[i][tmp]>='A')b[i][tmp] += 32;}for (long i=1;i<m+1;i++){next_init(b[i]);for (long j=1;j<m+1;j++){if (!hash[j])if (kmp(a[j],b[i]))hash[j] = true;}}for (long i=1;i<n+1;i++){if (!hash[i]){next_init(a[i]);for (long j=1;j<m+1;j++)if (kmp(b[j],a[i]))hash[i] = true;}}long ans = 0;for (long i=1;i<n+1;i++)if (hash[i])ans ++;printf("%ld",ans);return 0;}
- 【字符串匹配】漏洞和补丁
- 【字符串处理】漏洞和补丁
- 【字符串】漏洞和补丁解题报告
- 字符串链接和字符串匹配
- 字符串的匹配和查找
- 带‘.‘和’*‘的字符串匹配
- 字符串匹配和KMP算法
- [00104]字符串匹配和搜索
- Java 字符串匹配和替换字符串
- ANI漏洞微软官方补丁KB925902 下载
- IE XML漏洞官方补丁下载
- 微软发布Win8补丁 修复IE10漏洞
- Struts2 S2-020补丁绕过漏洞
- MS17-010特别版补丁NSA漏洞
- 字符串匹配算法(暴力匹配和KMP)
- 8.1.11 匹配和检索字符串(2)
- 8.1.11 匹配和检索字符串(1)
- C/C++字符串匹配和替换
- Android Binder设计与实现 – 设计篇
- 循环响铃
- 深入探讨JS中的数组排序函数sort()和reverse()
- int 和 String 互相转换的多种方法
- struts2的Date日期类型转换器
- 【字符串匹配】漏洞和补丁
- 陕西引汉济渭工地宿舍火灾已致13死24伤-陕西-引汉济渭-火灾
- Android框架浅析之锁屏(Keyguard)机制原理(转)
- 【转】最长公共子序列
- uevent分析 .
- jmp 指令用法
- 非递归二叉树层次遍历算法
- Tips for Developing a VoIP App
- 【数论】MMT数