题意:中文题面,不需要解释了。
思路:贪心,对于当前元素只有两种选择 并到其他段上和单独一段。
并到其他段上:和小于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; }