t035 收入計畫

2021-09-28 10:03:04 字數 1718 閱讀 9946

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。...