给定两个数字序列,求a序列中每隔p个构成的p+1个序列中共能匹配多少个b序列。

例如1 1 2 2 3 3 每隔1个的序列有两个1 2 3

kmp,匹配时每次主串往前p个,枚举1到p为起点。

题目

#include<bits/stdc++.h>
#define N 1000005
int t,n,m,p;
int nex[N];
int a[N],b[N];
using namespace std;
void getNext(){
int i=0,k=-1;
nex[]=k;
while(b[i]){
while(k!=-1 && b[i]!=b[k])k=nex[k];
nex[++i]=++k;
}
}
int KMP(){
int ans=0;
for(int q=0;q<p;q++){
int i=q,j=0;
while(i<n){
while(-1!=j && a[i]!=b[j])j=nex[j];
i+=p;j++;
if(j>=m){
ans++;
j=nex[j];
}
}
// printf("ans=%d\n",ans);
}
return ans;
}
int main(){
//freopen("1008.in","r",stdin);
scanf("%d",&t);
for(int ca=1;ca<=t;ca++){
memset(a,0,sizeof a);
memset(b,0,sizeof b);
memset(nex,0,sizeof nex);
scanf("%d%d%d",&n,&m,&p);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++)
scanf("%d",&b[i]);
getNext();
printf("Case #%d: %d\n",ca,KMP());
}
}

【hdu 5918】Sequence I(KMP)的更多相关文章

  1. 【HDU 6153】A Secret (KMP)

    Problem Description Today is the birthday of SF,so VS gives two strings S1,S2 to SF as a present,whi ...

  2. 【HDU 4763】Theme Section(KMP)

    这题数据水的一B.直接暴力都能够过. 比赛的时候暴力过的.回头依照正法做了一发. 匹配的时候 失配函数 事实上就是前缀 后缀的匹配长度,之后就是乱搞了. KMP的题可能不会非常直接的出,可是KMP的思 ...

  3. 【37.68%】【hdu 5918】Sequence I

    Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s) ...

  4. 【HDU 4992】 Primitive Roots (原根)

    Primitive Roots   Description We say that integer x, 0 < x < n, is a primitive root modulo n i ...

  5. 【HDU 1533】 Going Home (KM)

    Going Home Problem Description On a grid map there are n little men and n houses. In each unit time, ...

  6. 【HDU - 2102】A计划(bfs)

    -->A计划 Descriptions: 可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验.魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的 ...

  7. 【HDU 5839】Special Tetrahedron(计算几何)

    空间的200个点,求出至少四边相等,且其余两边必须不相邻的四面体的个数. 用map记录距离点i为d的点有几个,这样来优化暴力的四重循环. 别人的做法是枚举两点的中垂面上的点,再把到中点距离相等的点找出 ...

  8. 【HDU 4445】Crazy Tank(暴力)

    高中物理斜抛运动,简单分析一下角度固定下来则可以计算每个cannonball的降落坐标lnd. 因此暴力计算不同角度下的结果. #include <cstdio> #include &qu ...

  9. 【HDU 4343】Interval query(倍增)

    BUPT2017 wintertraining(15) #8D 题意 给你x轴上的N个线段,M次查询,每次问你[l,r]区间里最多有多少个不相交的线段.(0<N, M<=100000) 限 ...

随机推荐

  1. net对XML增删改查

    Pass:看公司代码,配置下拉框的功能,和下拉框的数字转文字.配置xml里面有下拉的value,name,这样界面直接显示数字,然后转译成中文 1.xml文件格式 <?xml version=& ...

  2. http协议(三)几种数据传输方式

    说说http协议的一些特点: 1)无状态 http协议是一种自身不对请求和响应之间的通信状态进行保存的协议,即无状态协议. 这种设置的好处是:更快的处理更多的请求事务,确保协议的可伸缩性 不过随着we ...

  3. PAT 1013. 数素数 (20)

    令Pi表示第i个素数.现任给两个正整数M <= N <= 104,请输出PM到PN的所有素数. 输入格式: 输入在一行中给出M和N,其间以空格分隔. 输出格式: 输出从PM到PN的所有素数 ...

  4. Structs2配置文件相关说明

    1,structs.xml文件解析 <package name="front" namespace="/front" extends="stru ...

  5. 十个节省时间的MySQL命令

    十个节省时间的MySQL命令 2011-02-23 16:07 黄永兵 译 IT168 字号:T | T 编者在工作中积累起来了一些MySQL命令行客户端技巧,这些技巧或多或少会帮助您节省大量的时间. ...

  6. Alpha版本发布说明

    软件发布的同时,在团队博客上写一个发布说明     ▪ 列出这一版本的新功能     ▪ 这一版本修复的缺陷     ▪ 对运行环境的要求     ▪ 安装方法     ▪ 描述系统已知的问题和限制 ...

  7. 基于Laravel+Swoole开发智能家居后端

    基于Laravel+Swoole开发智能家居后端 在上一篇<Laravel如何优雅的使用Swoole>中我已经大概谈到了Laravel结合Swoole的用法. 今天,我参与的智能家居项目基 ...

  8. canvas 2d 贴图技术实践

    最近在公司内部的技术协会论坛里闲逛的时候,无意中发现了一篇手淘前端大牛岑安两年前写的博文,讲述了canvas的2d贴图技术.看到后觉得相当神奇.于是就自己实现了一下.不过岑安前辈的那篇博文也只是大概讲 ...

  9. c#自动关闭 MessageBox 弹出的窗口

    我们都知道,MessageBox弹出的窗口是模式窗口,模式窗口会自动阻塞父线程的.所以如果有以下代码: MessageBox.Show("内容',"标题"); 则只有关闭 ...

  10. C++命名规范

    1.1    类型名 首字母大写,末尾加_T.如: class TnppCoverageArea_T{…}; 1.2    1.2 变量和函数名 变量和函数名中首字母小写,其后每个英文单词的第一个字母 ...