松果(蒟蒻,勿喷)有大佬的多指点指点

松果

描述

大森林有熊兄弟的好朋友松鼠蹦蹦,一天蹦蹦来到一条很长的小路,发现沿路地上都有松果,高兴极了,决定尽可能多吃松果。
蹦蹦观察到,每个松果的重量并不一定相同,可蹦蹦的肚子容量有限,总共最多只能吃重量C的松果。
蹦蹦吃东西有个特点,一旦开吃就会不停的吃,不会漏过路上碰到松果,直到遇到一个吃不下或吃完停止。也就是说松鼠蹦蹦只会吃连续一段的松果。
已知路上共有N个松果,顺序的重量是w1,w2,….wn。蹦蹦最多可能吃多少颗松果?

输入 

第一行,二个正整数,空格分开,表示N和C,N范围在[1..50000], C范围在[1..1000000]。
第二行,N个正整数,空格分开,表示从w1、w2,…wn,即松果的重量。每个松果重量范围在[1..1000]。

输出

一个正整数,蹦蹦可以吃到的最多松果数量。

输入样例 1 

5 5

3 1 2 1 1

输出样例 1

4

//具体思路:两个下标,枚举一段,一个左边,一个右边,s装当前一段的质量,要哨兵,因为如果全吃完局部会更新长度,吃不下就和maxn比较,大更新,

好,不废话

上代码:

#include<iostream>
using namespace std;
long long n,m,a[50001],l,s,maxn,r;
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    a[n+1]=m+1;
    while(1)
    {
        if(s+a[l+1]>m)
        {
            if(l-r>maxn)
            {
                maxn=l-r;
            }
            r++;
            s=s-a[r];
        }
        else
        {
            l++;
            s=s+a[l];
        }
        if(r==l)
        {
            break;
        }
    }
    cout<<maxn;
    return 0;

点个赞再走,靓仔靓女,(^-^)!

不点也行,但是我真的很想火,不火也行,毕竟我也是个小学生,但我还是很想火(ಥ_ಥ) 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值