第二週 2 2序列計數

2021-09-12 17:15:47 字數 1145 閱讀 1947

給定乙個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 ...