演算法答疑 06 月度開銷

2021-09-07 19:47:33 字數 1563 閱讀 7174

演算法:二分加貪心

從0--->組的每個數的和最大值 遍歷。判斷組是否滿足,組數**明值取大了,組數大了說明值取小了。

13     for ( int i = 1; i <= n; i++)

14

總時間限制: 

1000ms

記憶體限制: 

65536kb

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

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

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

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

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

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

樣例輸入

7 5

100400

300100

500101

400

樣例輸出

500

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

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

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;

6int n, m, a[100009], maxx = 0

, tot, ans;

7bool check( int);8

910intmain()

1120

int l = maxx, r =tot, mid;

21while ( l <= r ) /*

二分查詢

*/22

else

29 l = mid + 1; /*

否則擴大範圍

*/30

}31 printf( "

%d", ans ); /*

輸出最小值

*/32}33

3435

bool check( int x ) /*

當最小值是x時是否可以

*/36

else

45 sum +=a[i];46}

47if ( yfen <=m )

48return(1); /*

月份等於m時正好分成m個月份,小於m時,可以將某些月份中的天數拆開組成新月份,滿足分成m個月份

*/49

else

50return(0

);51 }

06 月度開銷OJ

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

Open judge 06月度開銷

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

4135 月度開銷

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