题目:
或直接使用
https://www.xinyoudui.com/problem/20730
来直接进入。
#include <bits/stdc++.h>
using namespace std;
int a[100005];
int n,c,t;
bool check(int x){
int cs=0,cnt=1;
for(int i=1;i<=n;i++){
if(cs+a[i]<=t*x){
cs+=a[i];
}else{
cnt++;
cs=a[i];
if(cnt>c){
return false;
}
}
}
return true;
}
int main(){
int maxn=-1,sum=0;
cin>>n>>c>>t;
for(int i=1;i<=n;i++){
cin>>a[i];
maxn=max(maxn,a[i]);
sum+=a[i];
}
int mint=maxn/t;
int maxt=sum/t;
int l=mint,r=maxt,mid;
while(l<r){
mid=(l+r)/2;
if(check(mid)==true){
r=mid;
}else{
l=mid+1;
}
}
cout<<l;
}
求助