Description

Input

Output

Data Constraint

Solution

  • 观察到条件是:

    Ak−i+1−Bi=Ak+j−1−Bj

    A_{k-i+1}-B_i=A_{k+j-1}-B_j

  • 移项后得:

    Ak−i+1−Ak+j−1=Bi−Bj

    A_{k-i+1}-A_{k+j-1}=B_i-B_j

  • 这样条件就只与自己有关,且其实质就是差值恒定。

  • 于是转换条件,就有:

    Ai−Ai−1=Bj−Bj−1

    A_i-A_{i-1}=B_j-B_{j-1}

  • 那么我们对 A 和 B 各做一次差分,用 KMP 查找 A 中有多少个子串为 B 即可。

  • 时间复杂度 O(N)O(N) 。

Code

#include<cstdio>
using namespace std;
const int N=1e6+1;
int a[N],b[N],next[N];
inline int read()
{int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w;
}
int main()
{int n=read(),m=read(),ans=0;for(int i=1;i<=n;i++) a[i]=read();for(int i=1;i<=m;i++) b[i]=read();for(int i=1;i<n;i++) a[i]=a[i+1]-a[i];for(int i=1;i<m;i++) b[i]=b[i+1]-b[i];for(int i=2,j=0;i<m;i++){while(j && b[i]!=b[j+1]) j=next[j];if(b[i]==b[j+1]) j++;next[i]=j;}for(int i=1,j=0;i<n;i++){while(j && a[i]!=b[j+1]) j=next[j];if(a[i]==b[j+1]) j++;if(j==m-1) ans++,j=next[j];}printf("%d",ans);return 0;
}

JZOJ 5437. 【NOIP2017提高A组集训10.31】Sequence相关推荐

  1. JZOJ 5438. 【NOIP2017提高A组集训10.31】Tree

    Description Input Output Sample Input 10 1 1 0 0 1 0 0 0 0 0 1 2 2 3 2 4 4 5 2 6 6 7 7 8 7 9 4 10 Sa ...

  2. JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate

    Description Input Output Data Constraint Solution 设前缀和 g[i][j]g[i][j] 表示 AA 为 ii .BB%A 为 jj 的数量. 这样就 ...

  3. JZOJ 5417. 【NOIP2017提高A组集训10.24】方阵

    Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 为了准备校庆庆典,学校招募了一些学生组成了一个方阵,准备在庆典上演出. 这个方阵是一个n*m的矩形,第i行 ...

  4. JZOJ 5436. 【NOIP2017提高A组集训10.30】Group

    Description Input Output Sample Input 10 113 28 3 39 90 46 14 55 35 48 47 Sample Output 62453 Data C ...

  5. JZOJ 5431. 【NOIP2017提高A组集训10.28】序列操作

    Description 一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1. 问最多可以进行多少轮操作后无法操作(即没有c[i] ...

  6. JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo

    Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...

  7. JZOJ 5419. 【NOIP2017提高A组集训10.24】筹备计划

    Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 校庆筹备组的老师们正在寻找合适的地方来举办校庆庆典.学生们的位置和可以举办庆典的位置在x轴的正半轴取值在[ ...

  8. JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜

    Description 由于众所周知的原因, 冈部一直欠真由理一串香蕉. 为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉: 一开始有n 个人围成一个圈, 从1 开始顺时针 ...

  9. JZOJ 5425. 【NOIP2017提高A组集训10.25】数论

    Description 聪明的0v0正在学习莫比乌斯反演. 她看到了这样的一道题:有n*m个人站成了一个n*m的方阵-- 剩下的题面,聪明的0v0不记得了.但是,她通过自己高超的数论技巧,给出了一个转 ...

最新文章

  1. AI金融若不解决这些问题,等于在制造新的不可解问题
  2. Runnable和Thread的区别
  3. Python IDLE或Python Shell不支持中文编码的解决方案
  4. RedHat7.0更新yum源(踩过的坑)
  5. 为计算机系的学生建立视图,数据库及其应用2010年1月真题
  6. 局内网用户访问wamp本地站点
  7. 练习2.13 不用库函数,写一个高效计算ln N的C函数
  8. 从杂技表演到日剧BGM(r12笔记第23天)
  9. rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
  10. java对存放实体的list进行排序
  11. VirtualBox 安装ghost版windows XP
  12. HDU 2604 Queuing
  13. js 判断字符是否以汉字开头
  14. 用计算机怎么按四分之三次方等于多少,八十一分之十六的负四分之三次方怎么算,要具体过程,答案是多少?...
  15. 大数据即席查询与分析
  16. ThinkPad SL400无线网卡的问题
  17. 大数据技术Spark详解
  18. U盘中毒后,文件夹被隐藏的解决方法
  19. HDU - 4567 Brilliant Programmers Show 2013长沙邀请赛
  20. 多线程socket通信server

热门文章

  1. Win10小技巧:如何将在此处打开命令改为CMD或Powershell?
  2. Python: adb自动化ce'shi
  3. linux开启内部路由转发功能
  4. CUDA从入门到精通(三):必备资料
  5. 计算若干数据的汉明距离总和
  6. 目标检测,目标识别的SAR数据集构建和标注
  7. [云炬创业基础笔记]第六章商业模式测试10
  8. [云炬创业基础笔记]第五章创业机会评估测试4
  9. 云炬随笔20160910
  10. 解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题