演算法:二分加貪心
從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 5100400
300100
500101
400
樣例輸出
500
提示若約翰將前兩天作為乙個月,第
三、四兩天作為乙個月,最後三天每天作為乙個月,則最大月度開銷為500。其他任何分配方案都會比這個值更大。
1 #include 2 #include 3 #include 4 #include 5using
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月包含一天或連續的多天,每天被恰好包含在...