解题思路
最简单的贪心思想,装满就加一,最后判断是否背包变量中还存在值,如果存在,整体的段数+1即可。
#include#define _for(i,a,n) for(int i=a;i >t;while(t--)#define close() ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)using namespace std;typedef long long ll;typedef pair P;const int maxn = 1e5;int arr[maxn + 5];int main(){ int n, m; cin >> n >> m; _for(i, 0, n) cin >> arr[i]; int tot = 0; int sum = 0; _for(i, 0, n) { sum += arr[i]; if(sum > m) sum = arr[i], tot ++; } if(sum) tot ++; cout << tot <