天天看点

每日一題-乘車問題-11

乘車問題

n 個班的小朋友乘大巴去郊遊,第 i 個班有 ai 個人。

每隔一段時間就會來一輛空大巴車,每個大巴車可以容納 m 個小朋友。

已知,在安排乘車時,必須按照 1 班,2 班,…,n 班的順序,依次安排每個班的小朋友。

同一個班的小朋友必須被安排在同一輛車内。

也就是說,如果目前需要安排 i 班乘坐大巴,而此時大巴剩餘的座位數量少于 ai,則讓大巴先走,i 班以及後續班級共同等待下一輛大巴到來。

請問,将所有小朋友接走,共需多少輛大巴?

輸入格式

第一行包含整數 T,表示共有 T 組測試資料。

每組資料第一行包含兩個整數 n,m。

第二行包含 n 個整數 a1,a2,…,an。

輸出格式

每組資料輸出一行結果,表示所需大巴數量。

資料範圍

1≤T≤30,

1≤n,m≤100,

1≤ai≤m

輸入樣例:

2

4 3

2 3 2 1

3 4

1 2 1

輸出樣例:

3

1

思路:定義一個res表示一班的人坐下後的剩餘座位 判斷下一班人數是否小于res 如果是更新res 如果不是乘車數量+1 更新res

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=110;

int g[N];

int main(){
    int T;
    cin>>T;
    while(T--){
        int n,m;
        cin>>n>>m;
        int count=0;
        for(int i=0;i<n;i++){
            cin>>g[i];
        }
        int res=0;
        for(int i=0;i<n;i++){
            if(res>=g[i]){res-=g[i];continue;}
             res=m-g[i];
             count++;
         
        }
        cout<<count<<endl;
        }
        
}