Time limit         2000 ms 
Memory limit  262144 kB

Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant Horace from the zoo of Kiev got hold of lots of wooden cubes somewhere. They started making cube towers by placing the cubes one on top of the other. They defined multiple towers standing in a line as a wall. A wall can consist of towers of different heights.

Horace was the first to finish making his wall. He called his wall an elephant. The wall consists of w towers. The bears also finished making their wall but they didn't give it a name. Their wall consists of n towers. Horace looked at the bears' tower and wondered: in how many parts of the wall can he "see an elephant"? He can "see an elephant" on a segment of w contiguous towers if the heights of the towers on the segment match as a sequence the heights of the towers in Horace's wall. In order to see as many elephants as possible, Horace can raise and lower his wall. He even can lower the wall below the ground level (see the pictures to the samples for clarification).

Your task is to count the number of segments where Horace can "see an elephant".

Input

The first line contains two integers n and w (1 ≤ n, w ≤ 2·105) — the number of towers in the bears' and the elephant's walls correspondingly. The second line contains n integers ai (1 ≤ ai ≤ 109) — the heights of the towers in the bears' wall. The third line contains w integers bi (1 ≤ bi ≤ 109) — the heights of the towers in the elephant's wall.

Output

Print the number of segments in the bears' wall where Horace can "see an elephant".

Example

Input

13 5
2 4 5 5 4 3 2 2 2 3 3 2 1
3 4 4 3 2

Output

2
Note

The picture to the left shows Horace's wall from the sample, the picture to the right shows the bears' wall. The segments where Horace can "see an elephant" are in gray.

题意:

见图,给定两段参差不齐的成墙,问图中左边灰色的可以在右边匹配到多少次?

匹配时可以上下移动,即只关心每一个柱的差值

分析:

一开始想到了用KMP,可是傻B地直接暴力的。。。。果断TLE

后来看了题解,很巧妙的处理了一下:

基于一段连续区间无论怎么变他们的相对位置不会变,所以分别将两个序列相邻的元素作差,一段区间的相对位置不会变,所以正好可以用差值去匹配。

代码:

  1 #include<bits/stdc++.h>
2 const int N=2e5+7;
3 int len1,len2,a[N],b[N],f[N],p[N];
4 void kmp_pre(int *x,int m,int *next)//以下感谢kuangbin神主提供的模板。
5 {
6 int i,j;
7 j=next[0]=-1;
8 i=0;
9 while(i<m)
10 {
11 while(-1!=j&&x[i]!=x[j]) j=next[j];
12 next[++i]=++j;
13 }
14 }
15 void prekmp(int *x,int m,int *kmpnext)
16 {
17 int i,j=-1;
18 kmpnext[0]=-1;
19 i=0;
20 while(i<m)
21 {
22 while(-1!=j&&x[i]!=x[j]) j=kmpnext[j];
23 if(x[++i]==x[++j]) kmpnext[i]=kmpnext[j];
24 else kmpnext[i]=j;
25 }
26 }
27 int next[N];
28 int kmp_count(int *x,int m,int *y,int n)
29 {
30 int i,j,ans=0;
31 kmp_pre(x,m,next);
32 i=j=0;
33 while(i<n)
34 {
35 while(-1!=j&&y[i]!=x[j]) j=next[j];
36 i++,j++;
37 if(j>=m)
38 {
39 ans++;
40 j=next[j];
41 }
42 }
43 return ans;
44 }
45 int main()
46 {
47 int w,n;
48 while(~scanf("%d%d",&w,&n))
49 {
50 len1=0,len2=0;
51 for(int i=0;i<w;i++)
52 {
53 scanf("%d",&a[i]);
54 if(i) f[len1++]=a[i]-a[i-1];
55 }
56 for(int i=0;i<n;i++)
57 {
58 scanf("%d",&b[i]);
59 if(i) p[len2++]=b[i]-b[i-1];
60 }
61 if(n==1)
62 {
63 printf("%d\n",w);
64 continue;
65 }
66 int ans=kmp_count(p,len2,f,len1);
67 printf("%d\n",ans);
68 }
69 return 0;
70 }

CodeForces–471D--MUH and Cube Walls(KMP)的更多相关文章

  1. CodeForces 471D MUH and Cube Walls -KMP

    Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant Horace from the zoo of ...

  2. Codeforces Round #269 (Div. 2) D - MUH and Cube Walls kmp

    D - MUH and Cube Walls Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & % ...

  3. Codeforces Round #269 (Div. 2)-D. MUH and Cube Walls,KMP裸模板拿走!

    D. MUH and Cube Walls 说实话,这题看懂题意后秒出思路,和顺波说了一下是KMP,后来过了一会确定了思路他开始写我中途接了个电话,回来kaungbin模板一板子上去直接A了. 题意: ...

  4. D - MUH and Cube Walls

    D. MUH and Cube Walls   Polar bears Menshykov and Uslada from the zoo of St. Petersburg and elephant ...

  5. [codeforces471D]MUH and Cube Walls

    [codeforces471D]MUH and Cube Walls 试题描述 Polar bears Menshykov and Uslada from the zoo of St. Petersb ...

  6. codeforces MUH and Cube Walls

    题意:给定两个序列a ,b, 如果在a中存在一段连续的序列使得 a[i]-b[0]==k, a[i+1]-b[1]==k.... a[i+n-1]-b[n-1]==k 就说b串在a串中出现过!最后输出 ...

  7. Codeforces 471 D MUH and Cube Walls

    题目大意 Description 给你一个字符集合,你从其中找出一些字符串出来. 希望你找出来的这些字符串的最长公共前缀*字符串的总个数最大化. Input 第一行给出数字N.N在[2,1000000 ...

  8. MUH and Cube Walls

    Codeforces Round #269 (Div. 2) D:http://codeforces.com/problemset/problem/471/D 题意:给定两个序列a ,b, 如果在a中 ...

  9. CF471D MUH and Cube Walls

    Link 一句话题意: 给两堵墙.问 \(a\) 墙中与 \(b\) 墙顶部形状相同的区间有多少个. 这生草翻译不想多说了. 我们先来转化一下问题.对于一堵墙他的向下延伸的高度,我们是不用管的. 我们 ...

随机推荐

  1. nginx配置一般优化参数

    #user nobody; worker_processes 2; # CPU亲和力,worker_processes最多开启8个,注意写法 worker_cpu_affinity 01 10; wo ...

  2. CentOS7 SVN基本配置

    开机自启指令如下 systemctl enable svnserve.service 对应可执行脚本文件路径 vim /etc/sysconfig/svnserve 查看状态: ps -ef|grep ...

  3. Dedecms 生成速度慢 的解决办法

    从dedecms官网论坛找到个合适的代码 include/inc/inc_fun_SpGetArcList.php for($i=0;$i<$ridnum;$i++){ if($tpsql==& ...

  4. wordcloud:让你的词语变成黑云

    介绍 对文本中出现频率较高的关键词给予视觉化的显示 使用 import jieba import codecs import wordcloud file = r"C:\Users\Admi ...

  5. QQ空间相册照片批量导出

    QQ空间相册照片批量导出 先自己创建一个私人的单独的群,然后创建相册,上传照片来源从空间选图复制 复制完成后打开相册开始骚操作(两种方式) OK

  6. VMware三种网络模式详解

    转载自https://www.cnblogs.com/linjiaxin/p/6476480.html 好文章怕原始地址会不能用,转载到自己这里,感谢原作者的无私奉献. 由于Linux目前很热门,越来 ...

  7. linux svn 安装

    1.环境centos6.4 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /var/www/svndata svnserve -d -r /va ...

  8. docker常用命令与容器创建

    ################docker安装##################### Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个 ...

  9. Mac OSX编译安装php7.1.8

    laravel中用到ldap认证包,要求php7.0以上版本,而且安装Mews\Captcha包的时候 验证码无法显示 报错如下: Call to undefined function Interve ...

  10. SQL函数取汉字拼音首字母

    )='') ) as begin ), ) , ,) if @chn > 'z' if( @chn < '八' ) set @c = 'A' else if ( @chn < '嚓' ...