Scape
一条街上有 \(n\) 家店,第 \(i\) 家店提供 \(w_i\) 单位的食物。
Scape 喜欢吃吃吃。但 Scape 的肚子的最大容量只有 \(c\) 单位。
Scape 可以选择某家店作为起点开始向右走(吃),每经过一家店(假设是第 \(i\) 家),只要他的肚子里还有剩余容量就会忍不住吃掉 \(w_i\) 单位的食物(如果没有剩余容量就不会吃而e是继续向右走)。
但 Scape 的生活很精致,他想最大化他吃过的店的数量,求这个数量。
输入格式
第一行两个整数 \(n,c\) 。
接下来的 \(n\) 个整数表示 \(w_i\) 。
输出格式
一行一个整数表示 Scape 最多能进多少店吃吃吃。
样例
input
7 5
1 5 4 3 2 1 1
output
3
数据范围
时间限制: 1s
空间限制: 256MB
对于 100% 的数据, \(n≤10^3,1≤c≤10^6,1≤wi≤10^3\)
我们可以枚举开始的在哪里,然后向右吃,看最多可以吃到哪里。全部当中求个最大值就可以了
#include
using namespace std;
const int N=1005;
int n,c,w[N],kc,ret,ans;
inline int max(int x,int y)
{
return x>y? x:y;
}
int main()
{
scanf("%d%d",&n,&c);
for(int i=1;i<=n;i++)
scanf("%d",w+i);
for(int i=1;i<=n;i++)
{
kc=c,ret=0;
for(int j=i;j<=n;j++)
{
if(kc>=w[j])
kc-=w[j],ret++;
}
ans=max(ans,ret);
}
printf("%d",ans);
return 0;
}