問題の説明
ファーマージョンは驚異的な会計上のウィザードであり、彼は農場を実行するためにお金が不足することがあります実現しています。彼はすでに計算とお金の正確な量を記録している(1つの≤ お金が私は 彼が次の上で毎日を過ごすために必要があることを10,000以下) N (1≤ N 日10万≤)。
FJはまさにのシーケンシャルセットのための予算を作成したい M (1≤ M ≤ N「fajomonths」と呼ばれる)会計期間。これらfajomonthsはそれぞれ、1以上の連続した日のセットが含まれています。毎日が正確に一つのfajomonthに含まれています。
FJの目標は最高の支出とfajomonthの費用を最小限に抑えるため、彼の毎月の支出の上限を決定するようにfajomonthsを配置することです。
入力
1行目:二スペースで区切られた整数:
N
と
M
行2 .. N +1:ライン I 1は、ファーマージョンに費やすドルの数含まれている I 番目の日を
行2 .. N +1:ライン I 1は、ファーマージョンに費やすドルの数含まれている I 番目の日を
出力
1行目:ファーマージョンが一緒に暮らすために余裕が可能な最小の月額限度。
サンプル入力
7 5 100 400 300 100 500 101 400
サンプル出力
500
************************************************** ************************************************** **********************
************************************************** ************************************************** **********************
1の#include <iostreamの> 2の#include < ストリング > 3の#include <CStringの> 4の#include <cmath> 5の#include <cstdioを> 6の#include <アルゴリズム> 7 の#define INF 9999999999 8 の#define LL長い長い 9 使用して 名前空間STD; 10 INT [ 100011 ]。 11 int型低、高、中、 12 int型N、M、I、J、K。 13 のint main()の 14 { 15 のscanf(" %D%D"&N、& M); 16 高= 0 ; 17 ロー= - INF; 18 用(i = 1 iが<= N; iが++ ) 19 { 20 のscanf(" %dの」、および[I]); 21 ハイ+ = [i]は、 22 であれば(ロー< [I]) 23 =低[I]; 24 } 25 INT get_m、和; 26 ながら(<低い高) 27 { 28 半ば=(ハイロー+)/ 2 。 29 和= 0 。 30 get_m = 0 。 31 のためには、(i = 1 ; iが<= N; iは++ ) 32 { 33 であれば(和+ [I] <= MID) 34 { 35 和+ = [I]。 36 } 37 他の 38 { 39 合計は= [I]。 40 get_m ++ ; 41 } 42 } 43 であれば(get_m <M)高= ミッド。 44 他の 45 の低=ミッド+ 1 ; 46 } 47 のprintf(" %Dを\ n " 、低いです)。 48 }
ます。https://www.cnblogs.com/sdau--codeants/p/3380676.htmlで再現