hdu3530 Subsequence 單調佇列

2021-07-03 09:15:51 字數 386 閱讀 3574

題目:在乙個序列中找乙個最長子串,使得子串的m<=極差<=k.

維護乙個遞減的單調佇列q1(隊首為當前最大),同時維護乙個遞增的單調佇列q2(隊首為當前最小),控制最大減最小 小於等於k , 若最大減最小大於等於m,則更新答案。

**:

#include#include#include#include#includeusing namespace std;

const int n = 1e5+10;

typedef long long ll;

int q1[n*5],q2[n*5],a[n];

int main()

printf("%d\n",ans);

}return 0;

}

hdu 3530 單調佇列

單調佇列就是佇列中的元素是單調遞增或遞減的。比如把 5 2 3 1 4 入隊 減 增 5 5 5 2 2 5 3 2 3 5 3 1 1 5 4 1 4 這個還是好理解的,但是,我們得會用單調佇列這一特性去解決題目,抽象出題目中有類似的操作。subsequence 題意 給三個數 n,x,y 接下來...

hdu 3530 Subsequence 單調佇列

題目鏈結 題意 給定陣列,求得最長的區間,使得其中最大值與最小值的差值在給定的範圍內 m,k 思路 維護兩個佇列記錄元素下標,lo 與 hi 具體如何維護之後再講 保證 a lo 單調增,且記當前處理到下標 i 的位置,則 a lo x 即為 lo x 1 1 i 區間中的最小值 保證 a hi 單...

hdu 3530(單調佇列)

傳送門 題解 用乙個單調不公升的佇列維護最大值,乙個單調不減的佇列維護最小值。如果不滿足條件,後移答案區間左端點,取兩個佇列頭指標的元素較小的乙個 位置盡量靠前使區間盡量長 include include include include using namespace std const int m...