嘿嘿嘿
2023-08-14 16:21:29
发布于:广东
10阅读
0回复
0点赞
这题二分反而复杂,还不如用前缀和做,复杂度才o(n)
上代码!
#include<iostream>
#include<iomanip>
#include<algorithm>
usinging namespace std;
int a[100001];
int main(){
int n,m,k=0,cnt=1;//k:更新分段
cin>>n>>m;
for(int i=1;i<=n;i+=1){
cin>>a[i];
a[i]+=a[i-1];//求前缀和
}
for(int i=1;i<=n-1;i+=1){
if(a[i+1]-k>m){
k=a[i];//更新前端
cnt+=1;
}
}
cout<<cnt;
return 0;
}
这里空空如也
有帮助,赞一个