洛谷P1181 數列分段

題目描述

對於給定的一個長度爲N的正整數數列A[i],現要將其分成連續的若干段,並且每段和不超過M(可以等於M),問最少能將其分成多少段使得滿足要求。

輸入輸出格式

輸入格式:
輸入文件divide_a.in的第1行包含兩個正整數N,M,表示了數列A[i]的長度與每段和的最大值,第2行包含N個空格隔開的非負整數A[i],如題目所述。

輸出格式:
輸出文件divide_a.out僅包含一個正整數,輸出最少劃分的段數。

輸入輸出樣例

輸入樣例#1:
5 6
4 2 4 5 1
輸出樣例#1:
3

#include <iostream>
using namespace std;
const int N = 100001;
int a[N];

int main()
{
    int n, m;
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
        cin >> a[i];
    int t = 0, ans = 0;
    for (int i = 1; i <= n; i++)
    {
        if (t + a[i] > m)
        {
            t = a[i];
            ans++;
            continue;
        }
        t += a[i];
    }
    cout << ans + 1 << endl;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章