$l$ 设成负无穷大也不行
by StarsIntoSea_SY @ 2024-02-21 09:47:44
@[StarsIntoSea_SY](/user/1121518) 试试把r设成正无穷
by happysheep @ 2024-02-21 10:01:53
@[happysheep](/user/937486) 不行
by StarsIntoSea_SY @ 2024-02-21 10:38:23
solve函数里num初始化为0
by Tommyshizichen @ 2024-02-21 10:41:29
说错了,初始化为1
by Tommyshizichen @ 2024-02-21 10:42:08
这样
```c
#include<stdio.h>
#define int long long
int n,m,a[100002],l=0,r=10010101010;
```
by happysheep @ 2024-02-21 10:44:54
@[Tommyshizichen](/user/1124466) @[happysheep](/user/937486) 都不行……离谱了
by StarsIntoSea_SY @ 2024-02-21 10:51:15
加一个else就可以了 ~~真没想到是这个~~
by happysheep @ 2024-02-21 11:10:23
@[StarsIntoSea_SY](/user/1121518)
```c
#include<stdio.h>
#define int long long
int n,m,a[100002],l=0,r=0;
int max(int x,int y){return x>y?x:y;}
inline bool solve(int x){
int tot=0,num=0;
for(int i=1;i<=n;++i){
if(tot+a[i]<=x) tot+=a[i];
else{
tot=a[i]; num++;
}
}
return num>=m;
}
signed main(){
scanf("%lld%lld",&n,&m);
for(int i=1;i<=n;++i){
scanf("%lld",&a[i]);
l=max(l,a[i]);
r+=a[i];
}
while(l<=r){
int mid=l+r>>1;
if(solve(mid)) l=mid+1;
else r=mid-1;
}
printf("%lld\n",l);
}
```
by happysheep @ 2024-02-21 11:12:58
@[happysheep](/user/937486) 谢dalao,我本人感到及其无语……(逃
by StarsIntoSea_SY @ 2024-02-21 11:14:04