2020寒假【gmoj2223】【hen母鸡下蛋】【区间和】

题目描述

鸡国中的母鸡最擅长下蛋了,MGMG 是鸡国中一只以下蛋产量高而闻名全鸡国的母鸡。
鸡国专供下蛋的 n 个鸡窝呈一字排列在鸡国的“下蛋中心”,从左到右依次编号为 1 到n。每个鸡窝都有一个最大可下蛋的量,其中第 i 个鸡窝的最大可下蛋量为 ci。有时候由于MGMG 产量实在太大而无法在一个鸡窝中下完所有的蛋,不得不转移到隔壁的鸡窝继续下蛋,如果隔壁的鸡窝还是不能让它下完所有的蛋,则 MGMG 继续转移,直到下完所有的蛋,或者向“下蛋中心”管理员投诉“鸡窝数量实在太少了,我一只鸡的下蛋量都装不下!”。
为了节省转移时所耗费的体力,请你编程帮助 MGMG 找若干个连续的鸡窝(个数尽量少),让它能下完所有的蛋。

输入

输入共 2 行。
第 1 行输入两个整数 n 和 t,表示“下蛋中心”有 n 个可供下蛋的鸡窝,MGMG 一次总共要下 t 个鸡蛋。
第 2 行 n 个正整数 ci(1≤i≤n),依次表示第 i 个鸡窝最大可下蛋量为 ci个。

输出

输出 1 行一个整数或一个单词。当输出整数时表示让 MGMG 下完所有的蛋至少需要几个连续的鸡窝。当 MGMG 用完所有的鸡窝都无法下完所有的蛋时,MGMG 表示非常愤怒,输出单词“Angry”(不包含双引号,注意大小写)。

样例输入

Input1:

5 4
1 2 1 2 3

Input2:

3 9
3 3 3

Input3:

3 5
1 2 1

样例输出

Output1:
2

Outupt2:
3

Output3:
Angry

数据范围限制

在这里插入图片描述

提示

Sample1:
样例 1 中,有 5 个鸡窝,可下蛋量分别为 1,2,1,2,3。MGMG 如果选择第 1,2,3号鸡窝能下完 4 个蛋,但要用 3 个鸡窝,而选择第 4 号和第 5 号鸡窝也能下完 4 个蛋(还有1 个多余的容量),用到的鸡窝只有 2 个。
注意:由于第 2 号和第 4 号鸡窝不连续,不可以作为选择的方案之一。

Sample2:
样例 2 中,有 3 个鸡窝,可下蛋量分别为 3,3,3,MGMG 可以在这 3 个连续的鸡窝中每个下 3 个蛋,这样正好总共下 9 个蛋。

Sample3:
样例 3 中,所有鸡窝的可下蛋总量小于 MGMG 的下蛋量,无法满足 MGMG 的下蛋需求,输出“Angry”。

分析

这题还以为是什么不可做的题呢!
其实我一开始就想出了正解的办法,只是一个细节没弄好,没了70pts啊啊啊。
这题就是前缀和预处理一下,直接枚举每一个区间,判断区间和是否大于t,然后打擂台选出最小的。
说一下为什么我一开始WA:因为我没有考虑到第二重循环时如果有一个可以了那么后面的都是没意义的,要break掉,不然TLE!!

上代码

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,t,a[1000010],ans,mx,mn=2147483647,sum;
int main()
{
    freopen("hen.in","r",stdin);
    freopen("hen.out","w",stdout);
    scanf("%d%d",&n,&t);
    for(register int i=1;i<=n;i++)
    {
    	scanf("%d",&a[i]);
    	sum+=a[i];
    	if(a[i]>=t)
    	{
    		cout<<1;
			return 0; 
		}
    	a[i]=a[i-1]+a[i];
	}
	if(sum<t)
	{
		cout<<"Angry";
		return 0;
	}
	for(register int i=1;i<=n-1;i++)
	{
		for(register int j=i+1;j<=n;j++)
		{
			int s;
			s=a[j]-a[i-1];
			if(s>=t)
			{
				mn=min(mn,j-i+1);
				break; 
			}
		}
	}
	printf("%d",mn);
    fclose(stdin);
    fclose(stdout);
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
"Kao足球真是一项受到广泛关注的运动。" 足球,作为一项全球性的运动,受到了世界各地人们的热爱和关注。它不仅仅是一项运动,更是一种文化和激情的象征。在球场上,球员们通过技术、策略和团队合作展示出令人惊叹的精彩表演。 足球的吸引力在于它的简单和普及性。只需一颗球和一个开阔的场地,就能让任何人参与其中。这使得足球成为了广大人群喜爱的运动,而且它能够连接人们并跨越语言和文化的界限。 足球不仅仅是一场比赛,它还是团队精神和合作的体现。球队中的每个球员都有自己的角色和职责,只通过彼此的配合和默契才能取得胜利。这不仅培养了个人的团队合作能力,也让球员们学会了互相信任和支持。在球迷眼中,他们更看重球队的精神氛围和团结程度。 此外,足球还有一种独特的激情和情感。球迷们通过观看比赛,与自己心仪的球队和球员建立起了紧密的情感联系。他们会为球队的胜利欢欣鼓舞,也会为球队的失败失落沮丧。这种激情和情感使得足球成为了一项与众不同的运动,无论是球员还是球迷都为之痴迷。 总而言之,足球的吸引力在于它的普及性、团队合作精神和丰富的情感体验。正因为如此,足球在世界范围内得到了广泛关注和喜爱。无论是球场上的竞技表演,还是球迷间的激情呐喊,都让人欣赏和陶醉其中。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值