题意:中文题面,不需要解释了。
思路:贪心,对于当前元素只有两种选择 并到其他段上和单独一段。
并到其他段上:和小于M。
单独一段:和大于M。
AC代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5+10;
int a[maxn];
int main(void){
    int n,m;
    cin>>n>>m;
    for(int i = 0; i < n; i++){
        cin>>a[i];
    }
    int sum = 0;
    int cnt = 1;
    for(int i = 0; i < n; i++){
        if((sum+a[i])<=m){
            sum += a[i];
        }
        else{
            sum = a[i];
            cnt++;
        }
    }
    cout<<cnt<<endl;
    return 0;
}