總時間限制:
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。其他任何分配方案都會比這個值更大。
我自己寫的**感覺沒有邏輯錯誤啊,總是wrong,大佬幫忙看看**的問題
1 #include 2using
namespace
std;34
int n,m,a[100005];5
int fun(int
t) else sum=a[i];13}
14if(k<=m)return1;
15else
return0;
16}1718
intmain()
27int left=maxx,right=summ,mid;
28while(left<=right)
33 cout34return0;
35 }
下面貼乙個通過的**:
1 #include2 #include3#define max 100010
4using
namespace
std;
5bool judge(int mid, int a, int n, intm)6
15else sum+=a[i]; //
否則就加上這個月 16}
17//
如果按照mid的分割方法,最大分割出t個月大於m,則可以繼續增加開銷,
18//
注意,這裡是說,最少分出的月份是t,那麼t>=m,則可以繼續增加開銷,以便使t變小
19if(t>=m) return
true
; 20
else
return
false;21
}22intmain()
2332
int l=max, r=total, mid;
33while(l<=r)
3439 cout40return0;
41 }
4135 月度開銷
題目 描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在...
4135 月度開銷
農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名為fajo月。每個fajo月包含一天或連續的多天,每天被恰好包含在乙個faj...
二分,月度開銷
009 月度開銷 總時間限制 1000ms 記憶體限制 65536kb 描述農夫約翰是乙個精明的會計師。他意識到自己可能沒有足夠的錢來維持農場的運轉了。他計算出並記錄下了接下來 n 1 n 100,000 天裡每天需要的開銷。約翰打算為連續的m 1 m n 個財政週期建立預算案,他把乙個財政週期命名...