现在给你两个字符串aa和bb,aa和bb都由小写字母构成。

小蜗想知道字符串bb在aa中出现了几次(出现位置可以重叠)。

输入格式

第一行两个整数n,mn,m,分别表示aa和bb的长度。

接下来两行,给出字符串aa和bb。

输出格式

输出一个数,表示答案。

样例输入

7 2
aaaabaa
aa

样例输出

4

数据规模

对于100%100%的数据,保证1≤n,m≤2000001≤n,m≤200000。

思路:这个题与智乃的密码十分相似,但是那个题只是需要字符出现即可,并没有指定子串为特定值,所以那个题用区间的前缀和与二分就行,但这个题是子串与主串的对比,是KMP,但是我们可以用哈希完全代替KMP,KMP能做的哈希都能做,并且哈希用处更全更简单,所以与KMP有关的直接用哈希即可。

哈希:第一个数是base的n次方,依次递减,最后一个数是base的0次方。

base是任意的一个数,但是base必须大于字符集中转换后的值中最大的一个,并且是质数。

关于base的n方的实现:先让前一个数乘base,然后再加上当前的值,用记录的值再乘base,.                                                   便能得到n方。

哈希求两段之差时:需要把前面的段乘上中间所差的段的次方,是为了同级,但是少的值,                                            仍然存在。

哈希数学表示:

哈希代码实现:

完整代码:

#include <bits/stdc++.h>using namespace std;#define int long long
const int mod=1e9+7;const int P=9999971,base=101;
const int N=2e5+10;
char a[N],b[N];
int ha[N],hb[N],hc[N];signed main() {ios_base::sync_with_stdio(false);cin.tie(NULL);int n,m;cin>>n>>m;cin>>a+1>>b+1;hc[0]=1;for(int i=1;i<=n;i++){hc[i]=(hc[i-1]*base)%P;}for(int i=1;i<=n;i++){ha[i]=(ha[i-1]*base+a[i]-'a')%P;}for(int i=1;i<=m;i++){hb[i]=(hb[i-1]*base+b[i]-'a')%P;}int ans=0;for(int i=1;i+m-1<=n;i++){if((ha[i+m-1]-ha[i-1]*hc[m]%P+P)%P==hb[m])ans++;//*hc[m]是为了同级,但是少的值仍然存在}cout<<ans<<endl;return 0;
}

Daimayuan Online Judge 小蜗的疑问相关推荐

  1. CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框

    转载自:https://blog.csdn.net/lzgs_4/article/details/46827761 在网页中,经常会用到各种Icon,如果老是麻烦设计狮画出来不免有些不好意思,所以有时 ...

  2. 微信小程序开发踩坑经验——小蜗社群

    2019独角兽企业重金招聘Python工程师标准>>> 之前遇到并且解决的坑,这边也渐渐忘记了,在这里就不列出来了-- 1.wx.redirectTo和wx.navigateTo   ...

  3. Daimayuan Online Judge 查重判断

    蜗蜗大学迎来了毕业季.现在有一批毕业生的论文需要查重. 蜗蜗大学的毕业论文是用数字写成的,现在蜗蜗教授用经验找出了一些可能是抄袭的论文,蜗蜗教授需要你来做出更准确的判断. 你现在被给到两篇论文,第一份 ...

  4. Daimayuan Online Judge 蒟蒻

    代码源每日一题 便利蜂的货架上摆了一排蒟蒻果冻,搞得鶸尛鱻眼花缭乱...... 对于每个果冻,都有一个价格 ww 和口感 tt.鶸尛鱻有一个购物篮子,在挑选蒟蒻果冻的时候,他有以下几种操作: 操作 1 ...

  5. 测试学python路线_小蜗分享:Python测试开发全套学习路线

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一阶段:专业基础课程 阶段目标: 1. 熟练掌握IT核心技术:编程,数据库,操作系统,版本控制 2. 能够熟练运用所学技术搭建各类服务器环境 3. 深入 ...

  6. python测试开发课程_小蜗分享:Python测试开发全套学习路线

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 第一阶段:专业基础课程 阶段目标: 1. 熟练掌握IT核心技术:编程,数据库,操作系统,版本控制 2. 能够熟练运用所学技术搭建各类服务器环境 3. 深入 ...

  7. Daimayuan Online Judge 快快变大

    给定一个长度为 nn 的数组 a1,a2,-,ana1,a2,-,an,接下来进行 n−1n−1 次操作.每次选择一个下标 xx ,将 axax 和 ax+1ax+1 合并成 ax×ax+1mod10 ...

  8. 电脑如何测网速_测网速小常识

    在我们日常使用的一些测速软件时,里面的功能和名词可大家都知道是什么意思吗?不知道的可以看这里,下面我为大家科普一下吧,如下图: 图片来源于精准测速APP 上传:即上传速度,是指将手机或电脑里面的内容传 ...

  9. python turtle怎么画海绵宝宝_画师绘制海绵宝宝性转拟人,派大星变小帅哥,又脑补一出甜蜜大戏...

    我已经工作了有一段时间了,但是我依然很喜欢看<海绵宝宝>这部动漫,每次看的时候都会笑得没心没肺,十分欢乐. 好羡慕海绵宝宝和派大星他们啊,海绵宝宝还要上班,有自己的理想和工作,派大星真的是 ...

最新文章

  1. Android性能调优篇之探索垃圾回收机制
  2. Windows 11成上班摸鱼利器,微软CEO喊话苹果:欢迎引入iMessage
  3. HH SaaS电商系统的销售订单付款后生成采购单和出库单的时序图
  4. idea导入maven项目依赖报错_解决Maven依赖冲突的好帮手,这款IDEA插件了解一下?
  5. 【转载】我是一个线程(修订版)
  6. 对XML文件进行的添加、删除、修改、查询操作。
  7. xlwings复制sheet_Python操作Excel的Xlwings教程(六)
  8. 【英语学习】【Level 07】U06 First Time L3 Subway everyday
  9. keeko机器人_机器人零距离,创意搭建编程妙趣多!——瑞云社区开展全国科普日活动...
  10. C/C++编程语言中操作目录及目录中文件的方法
  11. phpexcel 打开时 excel无法识别此文件格式
  12. 模型与高性能服务器结合,Epoll模型的高性能服务器丢失数据问题解决
  13. 技术管理实战笔记-团队建设篇
  14. 图书管理系统之普通用户、超级管理员页面布局(四)
  15. 日常所用的耳机接口定义
  16. 【USACO】2017 December Contest, Platinum题解
  17. 1103zxx学习日报
  18. mfc设置半透明对话框
  19. vue时间日期 开始时间 结束时间
  20. Windows问题解决方法

热门文章

  1. 再谈招聘的面试问题之学习能力判断
  2. 软件设计师的证书有多少含金量?
  3. Matlab 模拟声波散射,一种目标声散射特征模拟装置的制作方法
  4. 【认证/测试】产品的IP等级防水/防尘解析以及测试方法
  5. NBA球员出手位置分布图
  6. 未收到服务器返回信息吗,inode 未收到服务器回应
  7. Java对象空间分配流程
  8. 职场002:什么是可迁移能力
  9. 计算机中的同步和异步
  10. 排队论,对策论,层次分析法