慄醬有乙個長度為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輸入
23 2 5
7 8 7
8 73 2 5
7 8 9
8 7輸出12
備註:t≤15,
2≤m≤n≤2×105,
1≤ai,bi,k≤109
#include
using
namespace std;
typedef
long
long ll;
inline ll read()
while
(ch>=
'0'&&ch<=
'9')
return f*x;
}int a[
200100
],b[
200100
],s[
200100
],t[
200100
],n,m,k,nxt[
200100];
void
getnext()
intkmp()
return ans;
}int
main()
return0;
}
牛客 慄醬的數列
慄醬有乙個長度為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個數,...
牛客網 慄醬的數列 kmp
解題思路 其實一開始我只想到了暴力的方法,複雜度mn.後來網上找了題解 發現竟然還可以用kmp做,因為題目要求 a 1 b1 k a 2 b2 k a m bm k。那麼可以改造一下,變成 a2 a1 b2 b1 k 0,這樣就有可比性了。分成 a2 a1 項和 b2 b1 項,這種形式之和自己陣列...
慄醬的異或和
多組資料,資料第一行t表示資料組數。每組資料第一行乙個n,k表示一共有n堆石子,接下來你試圖從第k堆開始取,從第二行開始,每隔乙個空格乙個第i堆石子的數量ai。n 105,ai 109輸出 yes 或 no 代表從該堆開始取是否可以必勝 如果足夠聰明 示例1複製 2 3 21 2 3 2 12 1複...