超市扫货(数论)

26 篇文章 0 订阅
26 篇文章 0 订阅


 

已知超市配备的购物车容积为 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;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值