#C06L05P03. C06.L05.尺取法.填空题2,松果(DLOI2016xjt)
C06.L05.尺取法.填空题2,松果(DLOI2016xjt)
题目描述
大森林有熊兄弟的好朋友松鼠蹦蹦,一天蹦蹦来到一条很长的小 路,发现沿路地上都有松果,高兴极了,决定尽可能多吃松果。
蹦蹦观察到,每个松果的重量并不一定相同,可蹦蹦的肚子容量 有限,总共最多只能吃重量 C 的松果。
蹦蹦吃东西有个特点,一旦开吃就会不停的吃,不会漏过路上碰 到松果,直到遇到一个吃不下或吃完停止。也就是说松鼠蹦蹦只会吃 连续一段的松果。
已知路上共有 N 个松果,顺序的重量是 。蹦蹦最多可能吃多少颗松果?
输入格式
第一行,二个正整数,空格分开,表示 N 和 C,N 范围在[1..50000], C 范围在[1..1000000]。
第二行,N 个正整数,空格分开,表示从 ,即松果的重量。每个松果重 量范围在[1..1000]。
数据范围
一个正整数,蹦蹦可以吃到的最多松果数量。
输出格式
样例
5 5
3 1 2 1 1
4
9 5
1 5 4 3 2 1 1 4 1
3
样例解释
样例 1 :吃:(1,2,1,1)这段的松果。
样例 2 :吃:(2,1,1)这段的松果。
完成程序
#include<bits/stdc++.h>
using namespace std;
int n,c,a[50002],ma=0,s=0;
long long ans;
int main()
{
cin>>n>>c;
for(int i=1;i<=n;i++) cin>>a[i];
for(int x=1,y=填空(1);y<=n;y++)
{
s += 填空(2); // x 到 y 的松果总重量
填空(3) (s>c) s-= a[x++]; //移动 x 收缩区间
ma=max(填空(4),ma); //求最长区间长度
}
cout<<ma;
return 0;
}
填空(1):{{ input(1) }}
填空(2):{{ input(2) }}
填空(3):{{ input(3) }}
填空(4):{{ input(4) }}
相关
在以下作业中: