Subsequence 尺取法 二分)

2021-10-06 03:18:15 字數 1327 閱讀 5258

傳送門

法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...