#include <bits/stdc++.h>
using namespace std;
typedef long long
LL;
const int
MAX=1000010;
int
n,m;
int
a[MAX],b[MAX];
int
nextval[MAX];
LL ans;
void
get_next(int b[],int m)
{
int
i=0;
nextval[0]=-1;
int
j=-1;
while(
i<m)
{
if(
j==-1||b[i]==b[j])
{
++
i;
++
j;
// if(b[i]==b[j])
// nextval[i]=nextval[j];
// else
nextval[i]=j;
}
else

j=nextval[j];
}
}
int
KMP(int a[],int n,int b[],int m,int nextval[],int pos,int p)
{
int
i=pos;
int
j=0;
while(
i<n)
{
if(
j==-1||a[i]==b[j])
{

i+=p;
j++;
if(
j==m)
{

j=nextval[j];
ans++;
}
}
else

j=nextval[j];
}
}
int main()
{
int
t,i,j;
int
cas=1;
scanf("%d",&t);
while(
t--)
{
int
p;
ans=0;
scanf("%d%d%d",&n,&m,&p);
for(
i=0; i<n; ++i)
scanf("%d",&a[i]);
for(
j=0; j<m; ++j)
scanf("%d",&b[j]);
get_next(b,m);
// for(i=0; i<m; i++)
// printf("%d ",nextval[i]);
for(i=0;i<p;i++)
{
if(
i+(m-1)*p>=n)
break;

KMP(a,n,b,m,nextval,i,p);
}

printf("Case #%d: %lld\n",cas++,ans);
}
return
0;
}

最新文章

  1. WebService入门案例
  2. LINQ TO SQL 大全
  3. 如何用C语言编写病毒‘
  4. Mac生存手册
  5. CHtmlView类的中文介绍
  6. Android和Java的轻巧Wire协议缓冲器
  7. Oracle 日期处理
  8. stl_map,set 用法
  9. jenkins IOS- ad-hoc 打包
  10. poj3728 商务旅行
  11. oracle中创建数据库
  12. Linux常用基本命令(less)
  13. PHP 使用POST 获取不到部分数据问题
  14. vue的组件之间传值方法
  15. spring HibernateTemplate.save() 方法的自动提交问题
  16. machine_desc结构体【转】
  17. django -- 修改admin 密码问题
  18. Shell 脚本批量创建数据库表
  19. 【NIFI】 Apache NiFI 之 ExecuteScript处理(一)
  20. 代码: js日期

热门文章

  1. 数据仓库建模与ETL的实践技巧(转载)
  2. CI框架常识
  3. 在OC项目中实现swift与oc混编 相互引用
  4. go网关
  5. php常用加密函数总结
  6. [shell] Bash编程总结
  7. HTTP1.0 与HTTP2.0的区别
  8. java后台获取cookie里面值得方法
  9. linux下mysql开启二进制日志
  10. Java版本更新历史(ing)