Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
38888 LYLAKIOI 【BJ】T2 C++ 运行超时 90 1000 MS 1828 KB 1290 2025-11-11 20:56:19

Tests(29/30):


#include<bits/stdc++.h> #define up(i,l,r) for(int i=(l);i<=(r);++i) #define down(i,l,r) for(int i=(l);i>=(r);--i) #define pi pair<int,int> #define p1 first #define p2 second #define m_p make_pair #define p_b push_back using namespace std; typedef long long ll; inline ll read(){ ll x=0;short t=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')t=-1;ch=getchar();} while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar(); return x*t; } const int maxn=2e5+10,mod=998244353; int n,k,a[maxn],b[maxn],fail[maxn]; inline int add(int a,int b){if((a+=b)>=mod)a-=mod;return a;} void upd(int n,int *a){ down(i,n,1)a[i]=add(a[i],mod-a[i-1]); } int kmp(int n,int m,int *a,int *b){ if(!n)return 0; int p=0; up(i,2,n){ while(p&&a[p+1]!=a[i])p=fail[p]; if(a[p+1]==a[i])p++;fail[i]=p; }p=0; up(i,1,m){ while(p&&a[p+1]!=b[i])p=fail[p]; if(a[p+1]==b[i])p++; if(p==n)return i-n; } return -1; } void slv(){ n=read(),k=read()+1;k=min(k,n); up(i,1,n)a[i]=read(); up(i,1,n)b[i]=b[i+n]=read(); up(i,1,k)upd(n,a),upd(2*n,b); cout<<kmp(n-k,2*n-k,a+k,b+k); } int main(){ //freopen("rail.in","r",stdin),freopen("rail.out","w",stdout); slv(); return 0; }


测评信息: