JZOJ5437. 【NOIP2017提高A组集训10.31】Sequence
2017-10-31 17:01
696 查看
题目
题解
对于需要满足的式子,稍微移一下项:
Ak+i−1−Ak+j−1=Bi−Bj
也就是两两之间的差值相同,
先对两个序列进行差分,
然后就是完全匹配,用kmp。
code
#include<queue> #include<cstdio> #include<iostream> #include<algorithm> #include <cstring> #include <string.h> #include <cmath> #include <math.h> #define ll long long #define N 1000003 #define db double #define P putchar #define G getchar #define mo 1000000007 using namespace std; char ch; void read(int &n) { n=0; ch=G(); while((ch<'0' || ch>'9') && ch!='-')ch=G(); ll w=1; if(ch=='-')w=-1,ch=G(); while('0'<=ch && ch<='9')n=(n<<3)+(n<<1)+ch-'0',ch=G(); n*=w; } int max(int a,int b){return a>b?a:b;} ll min(ll a,ll b){return a<b?a:b;} ll abs(ll x){return x<0?-x:x;} ll sqr(ll x){return x*x;} void write(ll x){if(x>9) write(x/10);P(x%10+'0');} void writeln(ll x){write(x);P('\n');} int gcd(int x,int y){return y==0?x:gcd(y,x%y);} int nxt ,a ,b ,n,m,ans; void make(int* t,int len) { memset(nxt,0,sizeof(nxt)); int j=0; for(int i=2;i<=len;i++) { while(j>0 && t[j+1]!=t[i])j=nxt[j]; if(t[i]==t[j+1])j++; nxt[i]=j; } } int kmp(int l) { int j=0,sum=0; for(int i=1;i<n;i++) { while(j>0 && a[i]!=b[j+1])j=nxt[j]; if(a[i]==b[j+1])j++; if(j==l) { sum++; j=nxt[l]; } } return sum; } int main() { freopen("sequence.in","r",stdin); freopen("sequence.out","w",stdout); read(n);read(m); for(int i=1;i<=n;i++) read(a[i]),a[i-1]=a[i]-a[i-1]; for(int i=1;i<=m;i++) read(b[i]),b[i-1]=b[i]-b[i-1]; make(b,m-1); writeln(kmp(m-1)); }
相关文章推荐
- JZOJ 5437. 【NOIP2017提高A组集训10.31】Sequence
- JZOJ 5437. 【NOIP2017提高A组集训10.31】Sequence
- 【JZOJ5439】【NOIP2017提高A组集训10.31】Calculate
- JZOJ5439. 【NOIP2017提高A组集训10.31】Calculate 乱搞
- JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
- JZOJ5439. 【NOIP2017提高A组集训10.31】Calculate
- JZOJ 5438. 【NOIP2017提高A组集训10.31】Tree
- JZOJ5438. 【NOIP2017提高A组集训10.31】Tree
- JZOJ 5438. 【NOIP2017提高A组集训10.31】Tree
- 【JZOJ 5438】【NOIP2017提高A组集训10.31】Tree
- JZOJ 5439. 【NOIP2017提高A组集训10.31】Calculate
- 【JZOJ 5439】【NOIP2017提高A组集训10.31】Calculate
- 【JZOJ5431】【NOIP2017提高A组集训10.28】序列操作
- JZOJ5414. 【NOIP2017提高A组集训10.22】幸运值
- [JZOJ5415]【NOIP2017提高A组集训10.22】公交运输
- 【JZOJ 5421】【NOIP2017提高A组集训10.25】嘟嘟噜
- JZOJ 5407. 【NOIP2017提高A组集训10.21】Deep
- 【JZOJ 5418】【NOIP2017提高A组集训10.24】合影
- 【JZOJ 5424】【NOIP2017提高A组集训10.25】凤凰院凶真
- JZOJ 5422. 【NOIP2017提高A组集训10.25】天才绅士少女助手克里斯蒂娜