描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 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。其他任何分配方案都會比這個值更大。
題目是中文題,因此題意很容易知道,資料太大,全部遍歷會超時,二分很容易,但是要注意二分的條件,他可能會出錯,我就是上面的判斷裡面return忽略了等於的情況。。。讓電腦自己看著辦了。。就一直錯。。:
ac:#include#include#include//#include#include#include#include#include#include#includeusing namespace std;
#define ll long long
#define da 0x3f3f3f3f
#define xiao -0x3f3f3f3f
#define clean(a,b) memset(a,b,sizeof(a))// 雷打不動的標頭檔案
int shuzu[100100];
int r,l,n,m,mid,i,j,sum;
int judge()
//if(num>n>>m;
sum=0;
l=0;
for(i=0;i>shuzu[i];
sum=sum+shuzu[i];
l=l>shuzu[i]?l:shuzu[i]; //取最小的乙個是左極限
} r=sum;
//mid=(r+l)/2;
while(r>=l)
cout<
openjudge 月度開銷 二分查詢
06 月度開銷 總時間限制 1000ms 記憶體限制 65536kb 描述 農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名...
演算法實踐 月度開銷(二分)
農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在乙個fajo...
二分,月度開銷
009 月度開銷 總時間限制 1000ms 記憶體限制 65536kb 描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名...