已知超市配备的购物车容积为 VVV,商品货架上一共有 nnn 个货物,按照从超市入口到超市出口的顺序依次编号为 1,2,⋯ ,n1,2,\cdots,n1,2,⋯,n,第 iii 个货物的体积为 viv_ivi。
为了避免单次运输的货物太多,The__Flash 决定每次进入超市手推一辆空的购物车,按照从超市入口到超市出口的顺序依次将货物放进购物车,若放不下或者没有剩余货物,The__Flash 便会推着购物车去找柜台小姐姐结账,结账完成后离开超市将此次购买的货物放回家。
由于 The__Flash 忙着去超市扫货,所以请你帮忙计算出 The__Flash 需要进入超市多少次?
输入描述:
第一行输入两个整数 n,V (1≤n≤105, 1≤V≤230)n,V\,(1 \leq n \leq 10^5,\,1 \leq V \leq 2^{30})n,V(1≤n≤105,1≤V≤230)。 第二行输入 nnn 个整数 v1,v2,⋯ ,vn (1≤vi≤V)v_1,v_2,\cdots,v_n \, (1 \leq v_i \leq V)v1,v2,⋯,vn(1≤vi≤V)。
输出描述:
输出一个整数表示 The__Flash 需要进入超市的次数。
示例1
输入
复制5 3 1 2 3 3 1
5 3 1 2 3 3 1
输出
复制4
4
示例2
输入
复制3 3 1 3 1
3 3 1 3 1
输出
复制3
3
思路:创建一个自定义变量去做为购物车这一储存容器,把不同体积物品所拥有的体积输入累加到自定义变量这一容器中,因为容器有上限,因此每次累加都需要判断容器所能储存的容量是否上限
若达上限搬运次数加一,若不达上限则继续累加。
具体容器储存情况:1.当容器未达上限,继续累加。
2.当容器恰达上限,返回次数加一,容器储量变为0。
3.当容器超过上限,返回次数加一,并将容器先归零后累加。
结尾:1.当最后一次累加后容器内存在物品在做最后一次返回后输出。
2.不存在直接输出。
#include<bits/stdc++.h>//万能开头
using namespace std;开辟新空间
int main()
{
int q,i=0;
unsigned long long int w,e[99999999],r=0;
cin>>q>>w;
for(int a=0;a<q;a++)
{
cin>>e[a];
r+=e[a];
if(w==r)
{
i++;
r=0;
}
else if(w<r)
{
i++;
r=e[a];
}
}
if(r>0)
cout<<i+1;
else
cout<<i;
return 0;
}