@[Biyaotian](/user/940379) 不要乱用 `unsigned`,因为你无法保证计算时不会出现负数。
by danlao @ 2024-02-18 19:59:43
@[Biyaotian](/user/940379) 把第三行改成`const int`
by DFs_YYDS @ 2024-02-18 20:00:38
有负吧@[Biyaotian](/user/940379)
by lmhlmhlmh @ 2024-02-18 20:14:04
谢谢dalao们,我再逝世
by Biyaotian @ 2024-02-19 09:28:00
WWW,害是没过,听取红色一片!!dalao们再帮着看一看吧呜呜呜!蒟蒻深感无力!!@yaodiguoan@DFs_YYDS@imhimhimh
by Biyaotian @ 2024-02-19 10:07:43
@[yaodiguoan](/user/1023793)
by Biyaotian @ 2024-02-19 10:08:17
@[DFs_YYDS](/user/1119406)
by Biyaotian @ 2024-02-19 10:08:48
@imhimhimh
by Biyaotian @ 2024-02-19 10:09:17
@[Biyaotian](/user/940379) 把`unsighned`删了
by DFs_YYDS @ 2024-02-19 11:45:14
@[DFs_YYDS](/user/1119406)
谢谢
过了不过换了一种形式```cpp
#include<bits/stdc++.h>
using namespace std;
int n,m,a[100010],l,r,mid,ans;
bool cheak(int x){//x是门槛
int cnt=1;
long long sum=0;
for(int i=1;i<=n;i++){//求需要分几组
if(sum+a[i]<=x){
sum+=a[i];//更新sum
}
else{
cnt++;//新开一组
sum=a[i];//注意a[i]不是清零
}
}
if(cnt<=m){//注意
return true;
}
else{
return false;
}
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
l=max(l,a[i]);
r+=a[i];
}
while(l<=r){
mid=(l+r)/2;
if(cheak(mid)){
ans=mid;
r=mid-1;
}
else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
```
by Biyaotian @ 2024-02-19 11:56:31