【2017年浙江工业大学大学生程序设计迎新赛决赛】E 栗酱的数列【思维转化+KMP】

来源:互联网 发布:bbs.h5dm新域名 编辑:程序博客网 时间:2024/04/30 02:00

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
栗酱有一个长度为n的数列A,一个长度为m的数列B,现在询问A中有多少个长度为m的连续子序列A’,
满足(a’1+b1)%k = (a’2+b2)%k = …… = (a’m + bm)%k。
输入描述:
第一行一个数T,表示有T组数据。
对于每组数据,
第一行三个整数,n, m, k。
第一行输入n个数, a1,a2,…,an, 表示A数列中的数,
第二行输入m个数, b1,b2,…,bm, 表示B数列中的数。
输出描述:
每一组数据输出一行,满足条件的连续子序列数量。
示例1
输入

2
3 2 5
7 8 7
8 7
3 2 5
7 8 9
8 7
输出

1
2
备注:
T≤15,
2≤m≤n≤2×105,
1≤ai,bi,k≤109

分析:
对于式子: (a’1+b1)%k = (a’2+b2)%k = …… = (a’m + bm)%k。
我们先取前两项 ,(a’1+b1)%k = (a’2+b2)%k 。
==> (a’1 + b1) = (a’2 + b2 ) + k *z(z=0 +-1 ,+-2…) .
==> (a’1 + b1) - (a’2 + b2 ) = k * z (z=0 +-1 ,+-2…)
==> ( a’1 - a’2 ) + ( b1 - b2 ) = k * z (z=0 +-1 ,+-2… )
当时就化简到这里,然后要有m-1个式子同时成立,这个可怎么搞,想半天还是无果。 其实 要是再将式子化回去就会非常明朗。
==> ( a’1 - a’2 ) = ( b2 - b1 ) +k * z (z=0 +-1 ,+-2… )
==> ( a’1 - a’2 ) % k = ( b2 - b1 ) %k .
对于m-1个式子成立。这不就是很清晰了。
这样的话,就把问题转化为了KMP的问题。

代码

#include<bits/stdc++.h>using namespace std;#define LL long long#define CLOSE() ios_base::sync_with_stdio(false)const int MAXN = 2e5+11;const int MAXM = 1e6 ;const LL mod = 1e9+7 ;void getnext(LL* x,int m,int* Next){    int i,j;    j=Next[0]=-1;    i=0;    while(i<m){        while(-1!=j && x[i]!=x[j]) j=Next[j] ;        Next[++i]=++j;    }}LL a[MAXN],b[MAXN];int Next[MAXN];int Kmp_cal(LL *x,int m,LL *y,int n){    int i,j;    int ans=0;    getnext(x,m,Next);    i=j=0;    while(i<n){        while(-1!=j && y[i]!=x[j] ) j=Next[j];        i++;j++;        if(j>=m){            ans++;            j=Next[j];        }    }    return ans;}int main(){    CLOSE();    int T;cin>>T;    while(T--){        int n,m,k; cin>>n>>m>>k;        for(int i=0;i<n;i++)  {cin>>a[i]; a[i]%=k;}        for(int i=0;i<m;i++)  {cin>>b[i]; b[i]%=k;}        for(int i=0;i<n-1;i++) a[i]=((a[i+1]-a[i])%k+k)%k;        for(int i=0;i<m-1;i++) b[i]=((b[i]-b[i+1])%k+k)%k;      //  for(int i=0;i<n-1;i++) printf("%d ",a[i]); puts("");       // for(int i=0;i<m-1;i++) printf("%d ",b[i]); puts("");       cout<<Kmp_cal(b,m-1,a,n-1)<<endl;    }return 0;}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一对一黄播直播app\\\\/favicon.ico 5858s 新站址 www.8ppav免费观看 一对一黄播直播app\\\\/favicon.ico 韩国深夜成年综艺视频完整 十字路口操怀孕的大肚子播放 成年禁看视频免费 深圳同租房的真实交换2 女生勿进进必湿的文字 综艺劲爆点 日本集体配种播放 日本经典综艺家庭大作战 日本综艺节目大全 日本综艺家庭对抗赛全集播放 日本综艺母大作战2019 姐妹与各自儿子的互换在线中文字幕 婚前试爱汉语无删减在线播放 日本hairypage6 婚前试爱未删减版中文版 婚前试爱粤语电影完整未删减 colliderporn 专门卖假鞋的app既便宜又高仿 专门看禁漫免费的app 内购免费破解盒子大全 yingtao994.com 自己去网站看去 lra游戏(福利游戏) yingtao.ink樱桃视频 幻想娼馆 与蕾姆一起x交 回乡探亲受怀孕小敏 ios专门下破解游戏的app 停电和同桌第一次 老婆闺蜜系列 好友的老公(全) 游戏俱乐部 快生了一直用震动棒 婴儿手臂粗的阳物 抱着孕妇就提挺进 l8boygaysido 一妻多夫制晚上谁先开处 大伯子的东西顶 玉婷回乡下爷爷家