二分 Ybt 最大均值

2021-10-14 07:44:02 字數 1027 閱讀 4727

給定正整數序列 a,求乙個平均數最大的,長度不小於 l 的(連續的)子段

為了方便計算所以所有數都乘上1000.

then, 二分均值。

n

nn 的範圍到 105

10^5

105考慮二分判斷結果如何在 o(n

)o(n)

o(n)

或 o(nl

ogn)

o(nlogn)

o(nlog

n)的複雜度內解決:

我們可以將所有數減去 mid ,然後累計字首和。

當一段數 a

ia_i

ai​ ~ aj(

j<=i

−l

)a_j (j <= i-l)

aj​(

j<=i

−l) 的和 sum

[i]−

sum[

j]

sum[i]-sum[j]

sum[i]

−sum

[j] 大於0時,則符合條件。

我們可以使取值範圍內的 sum

[j

]sum[j]

sum[j]

盡量小,遂可以在 o(n

)o(n)

o(n)

內解決拉。

#include

int n, l;

long

long l, r, mid, a[

100011

], s[

100011

], ls[

100011];

bool

check

(long

long k)

return0;

}int

main()

l = s[l]

/ l;

while

(l < r)

printf

("%lld"

, l)

;//輸出

}

YbtOJ高效高階 二分 3 最大均值

ybtoj高效高階 二分 3 給定正整數序列a 求乙個平均數最大的,長度不小於 l 的 連續的 子段。10 66 4 21038 59 416500顯然二分 那要不然為啥是二分練習題呢 我們二分出這個平均值 然後把數列中每個數都減去這個平均值 然後找是否有一段長度不小於l的且和不為負數的數段即可 i...

k Means 二分k 均值演算法)

在上一節中我們已經講了k 均值演算法,當時我們選取的質心是隨機選取的,沒有什麼依據,所以聚類的結果很可能出現誤差,為了降低這種誤差的出現我們今天來研究一種優化的k 均值演算法 二分k 均值演算法,看到名稱我們就能明白在每次劃分的時候都是將資料劃分成倆份,直到達到我們要求的聚類數。怎麼來分?選取哪一堆...

二分K均值c 實現

二分k均值原理及python實現請見 1 2 python實現 c 基於python的思路寫的 求指點 include include include include include using namespace std typedef vectortuple const int dims 2 c...