这题有问题!
2026-03-14 14:50:41
发布于:浙江
2阅读
0回复
0点赞
这道题,关键变量用longlong过不了,5号测试点应该是用int变量溢出了,需要测试点数据请联系
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,ans,a[N];
int check(int x){
int num=1,s=0;
for(int i=1;i<=n;i++){
if(s+a[i]>x){
num++;
s=0;
}
s+=a[i];
}
return num;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){cin>>a[i];}
//二分答案步骤
//1.确定答案范围
int l=a[1],r=0;
for(int i=1;i<=n;i++){l = max(l,a[i]);r+=a[i];}
//2.二分查找,并完成check函数
while(l<=r){
int mid=(l+r)>>1;
int tmp=check(mid);
if(tmp<=m){//答案合理
ans=mid;//记录答案
r=mid-1;
}else{
l=mid+1;
}
}
cout<<ans;
return 0;
}
这里空空如也







有帮助,赞一个