母鸡下蛋

前言
“我是白领:今天领了薪水,交了房租水电,买了青菜大米,工资就白领了”。欢迎来到嘟嘟课堂。今天,嘟嘟老师讲一道水题——母鸡下蛋。
题目描述
鸡国中的母鸡最擅长下蛋了,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”(不包含双引号,注意大小写)。
样例输入1
5 4
1 2 1 2 3
样例输出1
2
样例说明1
样例 1 中,有 5 个鸡窝,可下蛋量分别为 1,2,1,2,3。MGMG 如果选择第 1,2,3号鸡窝能下完 4 个蛋,但要用 3 个鸡窝,而选择第 4 号和第 5 号鸡窝也能下完 4 个蛋(还有1 个多余的容量),用到的鸡窝只有 2 个。
注意:由于第 2 号和第 4 号鸡窝不连续,不可以作为选择的方案之一。
样例输入2
3 9
3 3 3
样例输出2
3
样例说明2
样例 2 中,有 3 个鸡窝,可下蛋量分别为 3,3,3,MGMG 可以在这 3 个连续的鸡窝中每个下 3 个蛋,这样正好总共下 9 个蛋。
样例输入3
3 5
1 2 1
样例输出3
Angry
样例说明3
样例 3 中,所有鸡窝的可下蛋总量小于 MGMG 的下蛋量,无法满足 MGMG 的下蛋需求,输出“Angry”。
数据范围限制
这里写图片描述
思路
本题非常的水。纯粹的前缀和。n^2+break优化防潮湿(超时)就行了。
代码

var
        a:array[1..10000000] of integer;
        b:array[1..10000000] of int64;
        i,j,n,t,min:longint;
        p:boolean;
begin
        min:=maxlongint;
        readln(n,t);
        for i:=1 to n do
        begin
                read(a[i]);
                b[i]:=b[i-1]+a[i];
                if (a[i]>t) then p:=true;
        end;
        if p then
        begin
                write(1);
                halt;
        end;
        if (b[n]<t) then
        begin
                write('Angry');
                halt;
        end;
        if (b[n]=t) then
        begin
                write(n);
                halt;
        end;
        for i:=1 to n do
        begin
                for j:=i+1 to n do
                begin
                        if (b[j]-b[i-1]>=t) and (j-i+1<min) then min:=j-i+1;
                        if (j-i+1>min) then break;
                end;
        end;
        write(min);
end.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值