二分,月度開銷

2021-10-07 22:16:36 字數 1128 閱讀 5898

009:月度開銷

總時間限制: 1000ms 記憶體限制: 65536kb

描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n (1 ≤ n ≤ 100,000) 天裡每天需要的開銷。

約翰打算為連續的m (1 ≤ m ≤ n) 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在乙個fajo月裡。

約翰的目標是合理安排每個fajo月包含的天數,使得開銷最多的fajo月的開銷盡可能少。

輸入第一行包含兩個整數n,m,用單個空格隔開。

接下來n行,每行包含乙個1到10000之間的整數,按順序給出接下來n天裡每天的開銷。

輸出乙個整數,即最大月度開銷的最小值。

樣例輸入

7 5100

400300

100500

101400

樣例輸出

500提示

若約翰將前兩天作為乙個月,第

三、四兩天作為乙個月,最後三天每天作為乙個月,則最大月度開銷為500。其他任何分配方案都會比這個值更大

思路:題目中的「最大中的最小」是典型的二分查詢的問法,本題中「最大」是指,開銷盡可能的大,使最大開銷劃分的月的數量小於等於m,為什麼可以取小於,因為用最大的,都能分完,我們可以吧多拆幾個月,也可以.最小的是,這個最大滿足條件,繼續尋找更小的滿足條件的.

#include

#include

using

namespace std;

int a[

100005];

int n, m;

bool

isvalid

(int mid)

else}if

(cnt > m)

return

false

;return

true;}

intmain()

int res =0;

while

(l <= r)

else l = mid +1;

}printf

("%d"

, res)

;return0;

}

二分查詢 06 月度開銷

總時間限制 1000ms 記憶體限制 65536kb 描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個...

4135 月度開銷(二分查詢)

總時間限制 1000ms 記憶體限制 65536kb 描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個...

月度開銷(二分)

描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在乙個f...