指向兩個序列
指向乙個序列
維護一段區間,就像快排一樣
一般的樣子
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,...