[JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)
题目链接:
http://172.16.0.132/senior/#main/show/5437
题目:

题解:
发现满足上述性质并且仅当A序列的子序列的差分序列与B序列的差分序列相同
于是我们把A变成差分序列,把B变成差分序列,做一次KMP就好了
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std; const int N=1e6+;
int n,m;
int a[N],b[N],nxt[N];
inline int read(){
char ch=getchar();int s=,f=;
while (ch<''||ch>'') {if (ch=='-') f=-;ch=getchar();}
while (ch>=''&&ch<='') {s=(s<<)+(s<<)+ch-'';ch=getchar();}
return s*f;
}
int main(){
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
n=read();m=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=m;i++) b[i]=read();
for (int i=;i<n;i++) a[i]=a[i+]-a[i];
for (int i=;i<m;i++) b[i]=b[i+]-b[i];
n--;m--;
nxt[]=;
for (int i=,j=;i<=m;i++){
while (j&&b[j+]!=b[i]) j=nxt[j];
if (b[j+]==b[i]) ++j;
nxt[i]=j;
}
int ans=;
for (int i=,j=;i<=n;i++){
while (j&&(j==m||b[j+]!=a[i])) j=nxt[j];
if (b[j+]==a[i]) ++j;
if (j==m) ans++;
}
printf("%d\n",ans);
return ;
}
[JZOJ 5437] [NOIP2017提高A组集训10.31] Sequence 解题报告 (KMP)的更多相关文章
- 【JZOJ5439】【NOIP2017提高A组集训10.31】Calculate
		题目 分析 对于\[\sum_{i=1}^{n}\lfloor\dfrac{T-B_i}{A_i}\rfloor\] 我们考虑拆开处理,得到 \[\sum_{i=1}^{n}(\lfloor\dfra ... 
- [JZOJ 100026] [NOIP2017提高A组模拟7.7] 图 解题报告 (倍增)
		题目链接: http://172.16.0.132/senior/#main/show/100026 题目: 有一个$n$个点$n$条边的有向图,每条边为$<i,f(i),w(i)>$,意 ... 
- 【JZOJ5428】【NOIP2017提高A组集训10.27】查询
		题目 给出一个长度为n的序列a[] 给出q组询问,每组询问形如\(<x,y>\),求a序列的所有区间中,数字x的出现次数与数字y的出现次数相同的区间有多少个. 分析 我们可以维护一个前缀和 ... 
- 5433. 【NOIP2017提高A组集训10.28】图
		题目描述 Description 有一个n个点A+B条边的无向连通图,有一变量x,每条边的权值都是一个关于x的简单多项式,其中有A条边的权值是k+x,另外B条边的权值是k-x,如果只保留权值形如k+x ... 
- 【JZOJ5430】【NOIP2017提高A组集训10.27】图
		题目 有一个n个点的无向图,给出m条边,每条边的信息形如\(<x,y,c,r>\) 给出q组询问形如\(<u,v,l,r>\) 接下来解释询问以及边的意义 询问表示,一开始你在 ... 
- 5432. 【NOIP2017提高A组集训10.28】三元组
		题目 题目大意 给你\(X+Y+Z\)个三元组\((x_i,y_i,z_i)\). 然后选\(X\)个\(x_i\),选\(Y\)个\(y_i\),选\(Z\)个\(z_i\). 每个三元组只能选择其 ... 
- 【JZOJ5434】【NOIP2017提高A组集训10.30】Matrix
		题目 分析 假设答案为ans, 发现\[k=\sum_{i=1}^{min(n,k)}\lfloor \dfrac{ans}{i} \rfloor\] 于是可以对ans进行二分, 用分块来求出上面的式 ... 
- 【NOIP2017提高A组集训10.21】Fantasy
		题目 Y sera 陷入了沉睡,幻境中它梦到一个长度为N 的序列{Ai}. 对于这个序列的每一个子串,定义其幻境值为这个子串的和,现在Y sera 希望选择K 个不同的子串并使得这K 个子串的幻境值之 ... 
- [jzoj 4668] [NOIP2016提高A组模拟7.19] 腐败 解题报告(质数分类+慢速乘)
		题目链接: http://172.16.0.132/senior/#main/show/4668 题目: 题解: 考虑把A数组里的每个元素分解质因数,对于每个质因数开一个vector存一下包含这个质因 ... 
随机推荐
- eclips  手机  offline
			[退出eclipse] [进入eclipse的工作区间] [删除 .metadata文件夹,确保 .metadata文件夹得隐藏文件也要删除] [重启eclipse,并重新导入你的工程] 
- 英语发音规则---D字母
			英语发音规则---D字母 一.总结 一句话总结: 1.D发[d]音? doctor ['dɒktə] n. 医生:博士 bread [bred] n. 面包:生计 hand [hænd] n. 手,手 ... 
- js 回调函数小例子
			js 回调函数小例子 <script> //将函数作为另一个函数的参数 function test1(){ alert("我是test1"); } function t ... 
- qq邮箱的SMTP服务器是什么
			qq邮箱的SMTP服务器是什么 QQ邮箱POP3 和 SMTP 服务器地址设置如下:POP3服务器地址为“pop.qq.com”,SMTP服务器地址为“smtp.qq.com”注:1.SMTP服务器需 ... 
- java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream
			转自:https://blog.csdn.net/y970105/article/details/355401 进入 tomcat根目录/lib/servlet-api.jar复制出来,放到JDK_P ... 
- 2019黑马JAVAEE57期基础班就业班(全套)
			黑马java57期 百度网盘 2019黑马JAVAEE57期基础班就业班(全套)百度网盘 下载 Spring全家桶解决方案 - 微服务认证解决方案(JWT) - 微服务网关解决方案(Zuul) 黑马j ... 
- 1.Win32基本程序概念
			还没学会走之前,不要跑! Message based , event driven 每个程序都应该有一个如下的循环:MSG msg;while(GetMessage(&msg,NULL,NUL ... 
- (转)用Lottie制作动画,我的月薪翻了一番!!
			Lottie是Airbnb发布的开源动画库. 帮助动效落地.学会使用Lottie,会极大地提高工作效率. Lottie是一种新的开发动画的方式. 学会使用Lottie,会极大改善你和开发小哥哥撕逼的情 ... 
- Android Studio 一些注意事项(自用,不定期更新)
			1,Android Studio 版本的选择 写这篇的时候,官方版本已经到了 v3.2.0,而我习惯使用的版本是 v2.3.1,因为这个版本有自带sdk的安装版,比较方便, 同时,v2.3.1 新建项 ... 
- HTTP_PROXY
			Linux, macOS, or Unix: $ export HTTP_PROXY=http://a.b.c.d:n $ export HTTPS_PROXY=http://w.x.y.z:m 设置 ... 
