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. python cx_oracle 环境搭建

    背景说明: 之前的环境本来是可以用的,是另外一个项目(python27)需要的时候搭建的.新项目采用的是python36,安装的cx_oracle的版本是7,而环境中的Oracle客户端是11,导致p ...

  2. 数据结构(三) 树和二叉树,以及Huffman树

    三.树和二叉树 1.树 2.二叉树 3.遍历二叉树和线索二叉树 4.赫夫曼树及应用 树和二叉树 树状结构是一种常用的非线性结构,元素之间有分支和层次关系,除了树根元素无前驱外,其它元素都有唯一前驱. ...

  3. css背景图自适应全屏显示

    前几天我在写一个前端页面的时候,需要用到全屏背景图,但是怎么写都不行(要么不全屏,要么不兼容Bootstrap的响应式布局).对,是我腊鸡 后来我在网上找的时候找到一个大神写的笔记,参(照)考(抄)之 ...

  4. 08 Python爬虫之selenium

    ---恢复内容开始--- 一. 先介绍图片懒加载技术 当获取一个网站的图片数据时,只能爬取到图片的名称,并不能获得链接,而且也不能获得xpath表达式.这是应用了图片懒加载技术. - 图片懒加载技术的 ...

  5. mac终端解决很多系统自带命令找不到问题

    node安装提示npm command not found 1.打开终端 2.输入命令如下: touch~/.bash_profile  (创建.bash_profile文件,-表示在-目录下,.表示 ...

  6. 第十八篇 JS传参数

    JS传参数   参数,这是个什么东西呢?简单的说吧,我们去玩别人的网站,一般来个登录,有用户名和密码,当我们输入正确之后,那么这用户名和密码里面的值,就是参数的值,它将这个值传给“参数”,然后提交到后 ...

  7. 访问gitlab从http方式改为ssh方式,gitlab使用的不是标准22端口

    设置步骤:1,本地进入.ssh查看是否存在密钥对:xxx和xxx.pub命令:cd ~/.ssh2,如果不存在,使用ssh-keygen来创建命令:ssh-keygen -t rsa -C " ...

  8. 互联网安全架构之常见的Web攻击手段及解决办法

    一.Web 安全常见攻击手段 XSS(跨站脚本攻击) SQL 注入 CSRF(跨站请求伪造) 上传漏洞 DDoS(分布式拒绝服务攻击)等 二.攻击手段原理及解决方案 1.XSS攻击 原理:XSS 攻击 ...

  9. shell awk读取文件中的指定行的指定字段

    1.awk功能和实用形式 awk指定读取文件中的某一行的某个字段 awk      可以设置条件来输出文件中m行到n行中每行的指定的k字段,使用格式如下 awk    'NR==m,NR==n {pr ...

  10. mybaites 入门到精通

    这个mybatis教程也不错:http://limingnihao.iteye.com/blog/781671 MyBatis 目录(?)[-] mybatis实战教程mybatis in actio ...