神奇插座

发布时间: 2017年7月3日 11:27   最后更新: 2017年7月5日 13:46   时间限制: 500ms   内存限制: 128M

描述

AA所在的国家有一项神奇的发明:插座。这里的插座不仅有两孔、三孔,而是有多种形态,下面用不同的小写字母表示不同的插座。插线板可以看做一排插座,因而下面用小写字母组成的字符串表示插线板。

该国家的用电器的插头也很特别,是由一串插头固定在一起的,下面用大写字母组成的字符串表示。只有插座和插头匹配,该用电器才能插在插线板上。例如:

插头ABCBA可以插在插线板abcbabcba上。

现在问题来了:给定插线板和插头,问该插线板上最多能插几个这样的插头?注意,这些插头不能重叠。

输入

多组测试数据。
每组测试数据包含两行,第一行为插座,第二行为插头。
插座、插头对应的字符均不超过106。
总数据量不超过107个字符。

输出

对每组数据,输出一行一个整数,表示答案。

样例输入1 复制

abcbabcba
ABCBA

样例输出1

1

解法非常简单,直接进行KMP匹配就可以了,但是KMP的模板要有一个小小的改动(因为这里题目要求插头不能重叠),那就是只要匹配到一个插头以后,直接置j = 0

这样可以避过重叠

代码:

#include <iostream>
#include <cstdio>
using namespace std;
#define MAXN 2000001
char s[MAXN];
char str[MAXN];
int fail[MAXN];
int search(char *str)
{int ans = 0;for (int i = 0, j = 0; str[i]; i++){while (j && str[i] - 'a' != s[j] - 'A')j = fail[j - 1];if (str[i] - 'a' == s[j] - 'A' && !s[++j]){ans++;j=0;}}return ans;
}void make_fail()
{for (int i = 1, j = 0; s[i]; i++){while (j && s[i] != s[j])j = fail[j - 1];if (s[i] == s[j])fail[i] = ++j;else fail[i] = 0;}
}
int main(){while(~scanf("%s %s",str,s)){make_fail();printf("%d\n",search(str));}return 0;
}

2017西安交大ACM小学期 神器插座 KMP匹配相关推荐

  1. 2017西安交大ACM小学期 美妙音乐[差分KMP匹配]

    美妙音乐 发布时间: 2017年7月3日 13:14   最后更新: 2017年7月5日 13:47   时间限制: 500ms   内存限制: 128M 描述 一段音乐是由若干个音符组成的,音乐中的 ...

  2. 2017西安交大ACM小学期 敏感词汇[AC自动机]

    敏感词汇 发布时间: 2017年7月5日 00:23   最后更新: 2017年7月6日 14:40   时间限制: 1500ms   内存限制: 128M 描述 我们知道,在进行聊天时,有些词汇是敏 ...

  3. 2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

    选择困难症 发布时间: 2017年7月4日 12:44   最后更新: 2017年7月4日 12:45   时间限制: 5000ms   内存限制: 128M 描述 GG有严重的选择困难症. 早上起床 ...

  4. 2017西安交大ACM小学期 刷墙[折半枚举+异或]

    刷墙 发布时间: 2017年7月3日 12:17   最后更新: 2017年7月6日 22:29   时间限制: 3000ms   内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉 ...

  5. 2017西安交大ACM小学期数论 [更新学号]

    发布时间: 2017年6月24日 20:27   最后更新: 2017年7月3日 09:27   时间限制: 3000ms   内存限制: 128M 描述 某知名高校有n个学生,每个学生有一个唯一ID ...

  6. 2017西安交大ACM小学期数论 [水题]

    水题 发布时间: 2017年6月25日 14:06   最后更新: 2017年7月3日 09:27   时间限制: 1000ms   内存限制: 128M 描述 平均因数个数的统计对于估算数论题目复杂 ...

  7. 2017西安交大ACM小学期 有趣异或[Trie树]

    有趣异或 发布时间: 2017年7月4日 23:59   最后更新: 2017年7月5日 14:56   时间限制: 1500ms   内存限制: 512M 描述 给定n个非负整数,保证这些数两两不相 ...

  8. 2017西安交大ACM小学期 文本查找[AC自动机]

    文本查找 发布时间: 2017年7月5日 00:10   最后更新: 2017年7月5日 13:47   时间限制: 1500ms   内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段 ...

  9. 2017西安交大ACM小学期 毁灭序列[倒跑并查集]

    毁灭序列 发布时间: 2017年7月4日 20:58   最后更新: 2017年7月6日 22:23   时间限制: 1000ms   内存限制: 512M 描述 给出一个n(1≤n≤2×105)个非 ...

最新文章

  1. SQL中Group By的使用详解
  2. Nginx配置文件详细说明
  3. 达拉草201771010105《面向对象程序设计(java)》第十六周学习总结
  4. spring mvc事务没有生效的原因
  5. 下一代Windows系统,Win11来了
  6. 平衡二叉树Python解法
  7. Python办公自动化,对文件进行自由操作
  8. 唏嘘!2019榜单出炉:铁打的Python连续3年第一,它居然跌出前十?
  9. 陶陶摘苹果(信息学奥赛一本通-T1103)
  10. 去超市一定要存包吗_大桥路某超市收银时出现多收现象!大家付完钱一定要核对...
  11. spring断言使用
  12. php dom xml解析,PHP使用DOM解析XML
  13. 1. crontab 简介
  14. jetty文件服务器,在Jetty中访问Web容器外部的文件
  15. Android 自动接听来电
  16. Access的BOM开发(2)基础信息
  17. 计算机键盘灯光怎么关闭,电脑关机键盘灯一直亮着解决方法
  18. android.dig机器人采访,机器人学导论心得 - osc_jjc36t9p的个人空间 - OSCHINA - 中文开源技术交流社区...
  19. 思科交换机路由器破解密码
  20. JVM(四).Class 文件结构(附字节码完整解析)

热门文章

  1. c语言 extern_Visual C++ 6.0环境中C语言extern 变量使用过程报错
  2. [mybatis]sqlSessionFactory.openSession()
  3. [JavaWeb-JavaScript]JavaScript_Function函数(方法)对象
  4. [PAT乙级]1043 输出PATest
  5. C++ class实现顺序栈(完整代码)
  6. http.ListenAndServe()到底做了什么?
  7. Docker容器实战思维
  8. Ubuntu上安装使用Docker
  9. exceptionhandler注解_SpringMVC 中 @ControllerAdvice 注解的三种使用场景!
  10. Java偏向锁、轻量级锁、重量级锁