time limit: 1 second
memory limit: 32 mb
【問題描述】
高考結束後,同學們大都找到了乙份臨時工作,渴望掙得一些零用錢。從今天起,matrix67將連續工作n天(1<=n<=100 000)。每
一天末他可以領取當天及前面若干天裡沒有領取的工資,但他總共只有m(1<=m<=n)次領取工資的機會。matrix67已經知道了在接
下來的這n天裡每一天他可以賺多少錢。為了避免自己濫用零花錢,他希望知道如何安排領取工資的時間才能使得領到工資最多
的那一次工資數額最小。注意matrix67必須恰好領工資m次,且需要將所有的工資全部領走(即最後一天末需要領一次工資)。
【輸入格式】
第一行輸入兩個用空格隔開的正整數n和m
以下n行每行乙個不超過10000正整數,依次表示每一天的薪水。
【輸出格式】
輸出領取到的工資的最大值最小是多少。
sample input
7 5
100
400
300
100
500
101
400sample output
【題目鏈結】:
【題解】
二分領取的工資為多少;
如果能夠在m次內領走就縮小答案;否則增大答案;
裸題;
【完整**】
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define ll long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
typedef pair pii;
typedef pairpll;
void rel(ll &r)
void rei(int &r)
const
int maxn = 1e5+100;
const
int dx[9] = ;
const
int dy[9] = ;
const
double pi = acos(-1.0);
int n,m;
int a[maxn];
bool ok(int x)
else
now+=a[i];
return
true;
}int main()
printf("%d\n",ans);
return
0;}
例題 收入計畫
高考結束後,同學們大都找到了乙份臨時工作,渴望掙得藝些零用錢。從今天起,matrix67將連續工作n天 1 n 100000 每一天末他可以領取當天及前面若干天裡沒有領取的工資,但他總共只有m 1 m n 次領取 資的機會,matrix67已經知道了在 接下來的這n天裡每一天他可以賺多少錢。為了避免...
二分答案 收入計畫
問題描述 高考結束後,同學們大都找到了乙份臨時工作,渴望掙得一些零用錢。從今天起,matrix67將連續工作n天。每一天末他可以領取當天及前面若干天裡沒有領取的工資,但他總共只有m次領取工資的機會。matrix67已經知道了在接下來的這n天裡每一天他可以賺多少錢。為了避免自己濫用零花錢,他希望知道如...
TYVJ 1359 收入計畫(二分)
一開始是一眼看出是二分的,因為這裡有單調性,因為取錢是一次取完並且是連續的。所以最優取法就是準備達到某個價值再取。最優裡邊包含了次優,也就是取不到m次我就能取完就一定能夠取m次能夠取完,只要在取法那裡隨便取就行了,保證不超過這個某個價值 於是我們可以二分這個價值,看看能不能最優法取完並且次數小於m。...