这题,小白书上有讲,所以当时也没多想直接二分,分完之后,发现有问题,他说前面的尽量小,这里就要贪心,
从后面贪心,只要和值不大于二分的值就一直二分,然后发现还是不对,看了别人的,忽略了一个问题,二分的时候
x的初始值不能是零,因为我写的判断二分的函数比较特殊,所以如果判断的值小于全部的数也能过,所以,这里x的
初值注意取全部数的最大值。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<algorithm>
#include<string>
#include<map>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#define LL long long
using namespace std;
const int maxn=1e4+10;
const double eps=1e-6;
int m,k;
int a[510];
int ca[1110];
bool solve(LL t)
{
LL sum=0;
int tem=k-1;
for(int i=0;i<m;i++)
{
if(sum+a[i]>t)
{
sum=0;
tem--;
}
if(tem<0)
return 0;
sum+=a[i];
}
return 1;
}
i