字首和 二分

2021-10-05 23:31:21 字數 902 閱讀 5475

powered by:ab_in 局外人

拿洛谷的乙個例子記一下字首和。

資料超過了1e5,故o(n^2)的演算法又行不通,所以換二分

#include

typedef

long

long ll;

using

namespace std;

ll n,m,l,r;

ll a[

1000001

],sum[

1000001];

inline

bool

check

(ll mid)

}return cnt>=m;

///如果最後分的區間大於等於了要分的區間,說明mid合法繼續二分。

}int

main()

r=sum[n]

;//右邊界是字首和的最大值(即陣列的和)

while

(l<=r)

cout

}

完結。

並不!

今天看完清楚姐姐的直播,感覺又明白了許多,趕緊拿乙個練練手……

二分+字首和,太典型了,但是這樣反而跑的比較慢。

#include

typedef

long

long ll;

using

namespace std;

ll a[

2000002

],n;

intmain()

}return0;

}

奧林oj上跑了668ms, 吸氧+改輸入輸出跑290ms.

看有大佬用等差數列!?還有公式!

orz完結。

二分與字首和

時間複雜度o log n 資料區間 l mid r 實現 while l給定乙個按照公升序排列的長度為 n 的整數陣列,以及 q 個查詢。對於每個查詢,返回乙個元素 k 的起始位置和終止位置 位置從 0 開始計數 如果陣列中不存在該元素,則返回 1 1。輸入格式 第一行包含整數 n 和 q,表示陣列...

二分和字首和(藍橋)

二分 1.數的範圍 題意 給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。1 n 100010,q 10000.對於每個查詢,返回乙個元素k的起始位置和終止位置 位置從0開始計數 如果陣列中不存在該元素,則返回 1 1 思路 對於已經排好序的,且要求查詢陣列中某乙個數的位置,屬於搜尋類...

感染 mid 字首和 二分

給定n nn個數,q qq次詢問每次乙個k kk問至少要到第幾個數的和才大於等於kkk。因為是求和,所以字首和處理一下,由於n nn和q qq都在106 10 6 106所以暴力找肯定超時 資料沒給滿導致很多人水過orz 所以考慮二分,由於字首和具有單調性,所以二分可行。注意l on glon g ...