給定乙個n個整數的序列以及乙個非負整數d,請你輸出這個序列中有多少個連續子串行(長度大於1),滿足該子串行的最大值最小值之差不大於d。
連續子串行:序列1 2 3中長度大於1的連續子串行有:
1 2
2 31 2 3
第一行包含兩個整數n,d。
接下來一行包含n個整數。
輸出乙個整數,表示滿足條件的連續子串行個數。
8 5
5 5 4 8 -10 10 0 1
7
滿足條件的連續子串行有:
5 5
5 5 4
5 5 4 8
5 45 4 8
4 80 1
請檢視下發檔案
內的sample2_input.txt和sample2_output.txt。
對於60%的資料,n ≤ 5000;
對於100%的資料,n ≤ 300000。
保證所有整數的絕對值不超過10^9,d不超過2×10^9。
空間:512 mb
[考慮分治。]
[令函式solve(l, r)表示統計[l, r]中合法的連續子串行個數,mid為(l+r)/2(下取整),那麼]
[solve(l, r) = 0, 當l = r]
[solve(l, r) = solve(l, mid) + solve(mid + 1, r) + cal(l, r, mid),當l≠r]
[其中cal(l, r, mid)表示在左端點在區間[l, mid]中、右端點在區間[mid + 1, r]中的符合要求的連續子串行數目]
[那麼答案就是solve(1, n)。]
[至於cal(l, r, mid)怎麼算,大家可以仔細思考思考。(右端點是有單調性的)]
[**注意答案要用long long**]
[(另外這題也可以用線性的方法做哦~有興趣去搜一搜單調棧)]
另外,為了幫助大家完成題目,我們提供了只包含了輸入輸出功能的程式模板,也提供了含有演算法的大部分實現細節的程式。
你可以根據自己的實際情況,在這些程式的基礎上進行作答,或不參考這些程式,這將與你的得分無關。
這些程式可以從【這裡
Sdoi2017 序列計數
alice想要得到乙個長度為n的序列,序列中的數都是不超過m的正整數,而且這n個數的和是p的倍數。alice還希望 這n個數中,至少有乙個數是質數。alice想知道,有多少個序列滿足她的要求。一行三個數,n,m,p。1 n 10 9,1 m 2 10 7,1 p 100 一行乙個數,滿足alice的...
lintcode 948 序列計數
求有多少個長為n的序列滿足如下要求 返回滿足要求的序列個數對 10000007 取模的結果 您在真實的面試中是否遇到過這個題?是 題目糾錯 樣例 1 輸入 n 2,m 5,p 4 輸出 3 解釋 這三個序列是 2,2 1,3 和 3,1 樣例 2 輸入 n 2,m 3,p 4 輸出 5 解釋 這 5...
SDOI2017 序列計數
這道題非常的迷幻 首先我們要容斥 考慮記 dp i j 表示前 i 位 p j 的方案數 g i j 表示前 i 位只用合數 p j 的方案數 於是可以考慮最暴力的 dp 是 o nm p 的 但是並沒必要 我們可以提前處理 1 m 這些數 p 的值,用這些值來轉移就好了 也就是額外記乙個 cnt ...