pascal问题,能解答么?

小明的破旧围栏又要喷涂油漆了。围栏由N个木板构成,每个宽度都为1cm,但是高度各不相同。他给自己买了一个喷漆机器,喷涂头恰好也是1cm宽。小明的喷漆机器是直接喷射的,因此... 小明的破旧围栏又要喷涂油漆了。围栏由N个木板构成,每个宽度都为1cm,但是高度各不相同。他给自己买了一个喷漆机器,喷涂头恰好也是1cm宽。
小明的喷漆机器是直接喷射的,因此喷头的每一个部位必须一直接触到木板,否则尤其会污染他的农田。并且机器也必须时刻与地面平行。可以看出,小明每次必须在同一高度对木板喷涂,可以从左到右直到没有围栏可以喷漆。这样,若干次喷漆之后,就可以将围栏翻新啦!
由于机器的特殊性,小明希望喷涂的次数尽量的少。
小明想要知道至少需要刷多少次就可以把围栏都刷完,请你帮忙计算一下!
展开
 我来答
BGHnnb
2014-05-30 · TA获得超过276个赞
知道小有建树答主
回答量:140
采纳率:50%
帮助的人:125万
展开全部

      本题需要一定的抽象思维能力,是2014年noip提高组(即高中组)的第一题改编版。思路:

      本题可以用类似贪心的思路得到。比如说如果我们按照第一列开始涂,那么显然我们必须要涂第一列高度次才可以涂完。然后我们再来看第二列。如果第二列没有第一列高(或一样高),那么第一列显然可以在涂的过程中顺便把第二列也给涂完。如果第二列比第一列高呢?那么我们涂完第一列后,首先把第二列中和第一列相同高度的部分也给涂完。

       推及到每一列,假设第i列比第i-1列高或一样(如图1-2):那么在涂第i列的时候,可以在涂a高度时把i+1列也给涂完;假设第i列比第i+1列低,那么在涂完a高度时,还需要再涂b-a高度才可以把第i+1列涂完。

       那么对于三列或者更多的情况呢?其实也是一样的,我们仍然一列列看。假设为i,i+1,i+2列时,那么仍然是现将第i列涂满,再涂第i+1列没有涂完的部分(如果需要的话),那么,对于第i+2列,我们可以将第i列中移到第i+1列的喷涂机器再增加一个宽,顺便涂完。

       详情请看程序:

var

  i,n,x,y,ans:longint;

begin

  readln(n);

  for i:=1 to n do

     begin

         read(x); if x>y then ans:=ans+x-y; y:=x;//这是核心。如果后一列没有前一列高,就说明可以直接涂满。否则,涂上前一列没有涂到的地方,也就是高的地方。

     end;

  writeln(ans):

end.

意法半导体(中国)投资有限公司
2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式