雙指標演算法(尺取法)

2022-05-29 19:03:23 字數 883 閱讀 7886

指向兩個序列

指向乙個序列

維護一段區間,就像快排一樣

一般的樣子

for(i = 0, j = 0; i < n; i++)

最核心的性質

能優化到\(o(n)\)可能是2n,3n等等

運用了某些單調的性質

模板就是為了節省思考的時間

輸出字串

for(int i = 0; i < strlen(str); i++)

//樸素做法

for(int i = 0; i < n; i ++)

for(int j = 0; j <= i; j ++)

if(check(j, i))

樸素演算法發現一些單調性,然後改進成\(o(n)\)

//雙指標

for(int i = 0; i < n; i ++)

while(j < n && check(j, i))

res = max(res, j - i)

單調佇列

只要加進來的i不等於j就可以一直保證整個區間的確定性

#include #include #include #include using namespace std;

const int maxn = 1e5 + 10;

int a[maxn], s[maxn];

int main()

res = max(res, i - j + 1);

}cout << res << endl;

return 0;

}

尺取法 雙指標小結

先排序,在有序陣列中移動兩個指標 篩選滿足題目條件的元素 2018年藍橋杯第六題 遞增三元組以b陣列為基準,在a陣列中找比b小的,在c陣列中找比b大的hihocoder 1514題,偶像的條件 類似上一題 小於等於a i 的數里最大的 和 大於等於a i 的數里最小的 二選一。2018年藍橋杯第八題...

尺取法(雙指標法)詳解

這節課我們來講尺取法思想。上課!首先,所謂尺取法,是列舉區間的時候的一種優化思想。我們顧名思義地理解,就像是在乙個數軸上,用尺慢慢地取。用比較學術的話來講,就是取一對陣列下標 即區間左右端點 根據題目要求和實際情況不斷地推進左右區間得出答案。你可能會說,這不就是暴力列舉麼?是的,不過它在處理區間的時...

演算法 尺取法

我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。題目翻譯 給定長度為n的數列整數a0,a1,a2,a3 an 1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。限制條件 100s 10 8 這裡我們拿第一組測試資料舉例子,即 n 10,s 15,...