傳送門
法1:字首和+二分思想。預處理字首和以便於求區間和,然後列舉所有區間左端,
二分查詢右端,用stl
stlst
l自帶的low
er_b
ound
lower\_bound
lower_
boun
d即可。
時間複雜度:o(n
logn
)o(nlogn)
o(nlog
n)法2:尺取法,列舉區間左端點,根據區間單調性,讓區間右端點不斷增加並更新答案。
時間複雜度:o(n
)o(n)
o(n)
法1**:
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n=
1e5+5;
#define mst(a) memset(a,0,sizeof a)
int pre[n]
;int
main()
int ans=n;
for(
int i=
1;i<=n;i++
)printf
("%d\n"
,ans);}
return0;
}
法2**:
#include
#include
#include
#include
#include
#include
using
namespace std;
typedef
long
long ll;
const
int n=
1e5+5;
#define mst(a) memset(a,0,sizeof a)
int a[n]
;int
main()
int ans=n;
for(
int l=
1,r=
1,sum=a[1]
;r<=n;
)printf
("%d\n"
,ans);}
return0;
}
演算法 尺取法
我們先來介紹一下尺取法。尺取法,顧名思義,像尺子一樣,一塊一塊的擷取。題目翻譯 給定長度為n的數列整數a0,a1,a2,a3 an 1以及整數s。求出綜合不小於s的連續子串行的長度的最小值。如果解不存在,則輸出0。限制條件 100s 10 8 這裡我們拿第一組測試資料舉例子,即 n 10,s 15,...
尺取法練習
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...