JZOJ 5437. 【NOIP2017提高A组集训10.31】Sequence
Description
Input
Output
Data Constraint
Solution
观察到条件是:
Ak−i+1−Bi=Ak+j−1−BjA_{k-i+1}-B_i=A_{k+j-1}-B_j
移项后得:
Ak−i+1−Ak+j−1=Bi−BjA_{k-i+1}-A_{k+j-1}=B_i-B_j
这样条件就只与自己有关,且其实质就是差值恒定。
于是转换条件,就有:
Ai−Ai−1=Bj−Bj−1A_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相关推荐
- 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 ...
- JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
Description Input Output Data Constraint Solution 设前缀和 g[i][j]g[i][j] 表示 AA 为 ii .BB%A 为 jj 的数量. 这样就 ...
- JZOJ 5417. 【NOIP2017提高A组集训10.24】方阵
Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 为了准备校庆庆典,学校招募了一些学生组成了一个方阵,准备在庆典上演出. 这个方阵是一个n*m的矩形,第i行 ...
- 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 ...
- JZOJ 5431. 【NOIP2017提高A组集训10.28】序列操作
Description 一开始有n个非负整数hi,接下来会进行m次操作,第i次操作给出一个数c[i],要求你选出c[i]个大于零的数并将它们减去1. 问最多可以进行多少轮操作后无法操作(即没有c[i] ...
- JZOJ 5426. 【NOIP2017提高A组集训10.25】摘Galo
Description 0v0在野外看到了一棵Galo树,看到食物的0v0瞪大了眼睛,变成了OvO. 这棵Galo树可以看做是一棵以1号点为根的n个点的有根数,除了根节点以外,每个节点i都有一个Gal ...
- JZOJ 5419. 【NOIP2017提高A组集训10.24】筹备计划
Description 题目背景 热烈庆祝北京师范大学附属实验中学成立100周年! 问题描述 校庆筹备组的老师们正在寻找合适的地方来举办校庆庆典.学生们的位置和可以举办庆典的位置在x轴的正半轴取值在[ ...
- JZOJ 5421. 【NOIP2017提高A组集训10.25】嘟嘟噜
Description 由于众所周知的原因, 冈部一直欠真由理一串香蕉. 为了封上真由理的嘴, 冈部承诺只要真由理回答出这个问题, 就给她买一车的香蕉: 一开始有n 个人围成一个圈, 从1 开始顺时针 ...
- JZOJ 5425. 【NOIP2017提高A组集训10.25】数论
Description 聪明的0v0正在学习莫比乌斯反演. 她看到了这样的一道题:有n*m个人站成了一个n*m的方阵-- 剩下的题面,聪明的0v0不记得了.但是,她通过自己高超的数论技巧,给出了一个转 ...
最新文章
- AI金融若不解决这些问题,等于在制造新的不可解问题
- Runnable和Thread的区别
- Python IDLE或Python Shell不支持中文编码的解决方案
- RedHat7.0更新yum源(踩过的坑)
- 为计算机系的学生建立视图,数据库及其应用2010年1月真题
- 局内网用户访问wamp本地站点
- 练习2.13 不用库函数,写一个高效计算ln N的C函数
- 从杂技表演到日剧BGM(r12笔记第23天)
- rsa php前台加密后台解密源码,使用RSA实现前端公钥加密后端私钥解密
- java对存放实体的list进行排序
- VirtualBox 安装ghost版windows XP
- HDU 2604 Queuing
- js 判断字符是否以汉字开头
- 用计算机怎么按四分之三次方等于多少,八十一分之十六的负四分之三次方怎么算,要具体过程,答案是多少?...
- 大数据即席查询与分析
- ThinkPad SL400无线网卡的问题
- 大数据技术Spark详解
- U盘中毒后,文件夹被隐藏的解决方法
- HDU - 4567 Brilliant Programmers Show 2013长沙邀请赛
- 多线程socket通信server