题解
2023-09-20 17:53:41
发布于:广东
1阅读
0回复
0点赞
#include <iostream>
#include <algorithm>
using namespace std;
int a[100005];
int A(int n,int m,int k) {
int cnt=0,sum=0;
for (int i=1;i<=n;i++) {
if (sum+a[i]>m) {
cnt++;
sum=0;
}
sum+=a[i];
}
if (cnt>k) return 0;
else return 1;
}
int main() {
int n,m;
scanf("%d %d",&n,&m);
for (int i=1;i<=n;i++) {
scanf("%d",&a[i]);
}
int l=1,r=n;
while (l<=r) {
int mid=(l+r)>>1;
if (A(n,m,mid)==0) {
l=mid+1;
}else{
r=mid-1;
}
}
printf("%d",l+1);
return 0;
}
这里空空如也
有帮助,赞一个