zmnXAglTcg
#include <map>
#include <cmath>
#include <stack>
#include <queue>
#include <limits>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#define Sci(x) scanf("%d",&x)
#define Sci2(x, y) scanf("%d%d",&x,&y)
#define Sci3(x, y, z) scanf("%d%d%d",&x,&y,&z)
#define Scl(x) scanf("%I64d",&x)
#define Scl2(x, y) scanf("%I64d%I64d",&x,&y)
#define Scl3(x, y, z) scanf("%I64d%I64d%I64d",&x,&y,&z)
#define Pri(x) printf("%d\n",x)
#define Prl(x) printf("%I64d\n",x)
#define For(i,x,y) for(int i=x;i<y;i++)
#define FFor(i,x,y) for(int i=x;i>y;i--)
#define For_(i,x,y) for(int i=x;i<=y;i++)
#define FFor_(i,x,y) for(int i=x;i>=y;i--)
#define Mem(f, x) memset(f,x,sizeof(f))
#define LL long long
#define ULL unsigned long long
#define MAXSIZE 200010
#define INF 0x3f3f3f3f
const int mod = 1e9+7;
const double PI = acos(-1.0);
//using namespace std;
int next[MAXSIZE];
int n,m,k;
void getnext(int a[])
{
int i=0;
int j=-1;
next[0]=-1;
while(i<m)
{
if(j==-1||a[i]==a[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
}
int kmp(int s[],int p[])
{
int i=0;
int j=0;
getnext(p);
int cnt=0;
while(i<n)
{
if(j==-1||(s[i]+p[j])%k==0)
{
i++;
j++;
}
else
{
j=next[j];
if(j==m)
{
j=next[j];
cnt++;
}
}
}
return cnt;
}
int main()
{
int t;
Sci(t);
int a[MAXSIZE];
int b[MAXSIZE];
while(t--)
{
Sci3(n,m,k);
For_(i,0,n-1)
Sci(a[i]);
For_(i,0,m-1)
Sci(b[i]);
For_(i,0,n-2)
a[i]=(a[i+1]-a[i]+k)%k;
For_(i,0,m-2)
b[i]=(b[i+1]-b[i]+k)%k;
n--;
m--;
int ans=kmp(a,b);
Pri(ans);
}
return 0;
}
zmnXAglTcg的更多相关文章
随机推荐
- memecached存放session数据
memcached存放session 1.session数据需要频繁调用. 2.session数据不需要永久性的保存在服务端. 3.在集群中,可以将session存放在memcached中或者是在数据 ...
- (2)Linux文件和目录操作命令
简单就是高效 pwd cd -/~/.. tree–a/d/f/i/L mkdir–p/v/m touch ls –l/a//i/h/F cp –r/p/d/a mv rm –f/r/i rmdir ...
- POJ 3581:Sequence(后缀数组)
题目链接 题意 给出n个数字的序列,现在让你分成三段,使得每一段翻转之后拼接起来的序列字典序最小.保证第一个数是序列中最大的数. 例如样例是{10, 1, 2, 3, 4},分成{1, 10}, {2 ...
- HDU 5521:Meeting(最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=5521 Meeting Problem Description Bessie and her friend E ...
- MySQL sys Schema 简单介绍-1
参考文档: MySQL- 5.7 sys schema笔记 MySQL 5.7新特性:SYS库详解 MySQL Performance Schema&sys Schema介绍 内存分配统计视图 ...
- C++一些知识的整理
1. C 和 C++ 区别 C++支持多种编程范式:面向对象编程.泛型编程.过程化编程.支持类.封装.重载等特性. c和c++的头文件不同. 输入输出不同. 变量的声明定义不同:c语言:变量要放在语句 ...
- S7 300数据块中的变量指定断电保持特性
利用DB块内变量属性的保持性,勾选上就可以保持了.300PLC数据块默认断电保持.
- 对scanner.close方法的误解以及无法补救的错误
scanner错误关闭导致的异常 public class test2 { public static void main(String[] args) { Scanner scanner1 = ne ...
- python通过TimedRotatingFileHandler按时间切割日志
通过TimedRotatingFileHandler按时间切割日志 线上跑了一个定时脚本,每天生成的日志文件都写在了一个文件中.但是日志信息不可能输出到单一的一个文件中. 原因有二:1.日志文件越来越 ...
- Balking设计模式
import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayLi ...