我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。
題目翻譯:
給定長度為n的數列整數a0,a1,a2,a3 ..... an-1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。
限制條件:
100s<10^8
這裡我們拿第一組測試資料舉例子,即 n=10, s = 15, a =
這幅圖便是尺取法怎麼「取」的過程了。
整個過程分為4布:
1.初始化左右端點
2.不斷擴大右端點,直到滿足條件
3.如果第二步中無法滿足條件,則終止,否則更新結果
4.將左端點擴大1,然後回到第二步
用尺取法來優化,使複雜度降為了o(n)。
最後,再給乙個尺取法的定義以便更好理解:返回的推進區間開頭和結尾,求滿足條件的最小區間的方法稱為尺取法。
**: int l=0,r=0,n,a[100005],num=0,s,res;
while(l
if(num
res=min(res,r-l-1);
num-=a[l];
l++;
}
雙指標演算法(尺取法)
指向兩個序列 指向乙個序列 維護一段區間,就像快排一樣 一般的樣子 for i 0,j 0 i n i 最核心的性質 能優化到 o n 可能是2n,3n等等 運用了某些單調的性質 模板就是為了節省思考的時間 輸出字串 for int i 0 i strlen str i 樸素做法 for int i...
尺取法練習
mr wolfram 的csdn 部落格 hopeforbetter的csdn部落格,尺取法顧名思義就像尺子一樣,當測量乙個物體時,你不一定從開始的位置測量,你可以從任意乙個位置st開始,當然前提是尺子夠長,然後你再讀出尾部en的數,尾部減去開始的位置en st,就是這個物體的長度。尺取法就是這個思...
尺取法基礎
p1638 逛畫展 題意 求最短區間包含所有畫家。思路 利用兩個變數來維護區間,如果區間不滿足條件r 滿足的話,l 直到區間最小。includeusing namespace std int a 1000005 b 1000005 int main b a l if b a l 0 k l else...