jzoj P1664 【coci2011/2012 1】JABUKE

题目大意:
一个有N列的屏幕的底部,有个占M列的船。我们可以左右移动这条船,但是这条船必须时刻完整的在屏幕里面。这条船开始的时候是在最左边的。有一些苹果从这个屏幕的顶部掉下来,每个苹果会从屏幕N列中的某一列的顶部掉下来,垂直下落直到到达屏幕的底部。当前一个苹果掉落在底部以后,后一个苹果开始下落。

一个苹果被船接到是这么定义的:这条船占有这个苹果掉下来的那一列。我们的目标是接到所有的苹果,在这种情况下,我们要求在所有苹果的掉落过程中,尽量减少船的移动总距离。

1<=M < N < =10

题解:
虽然看起来好像要贪心一下,但是其实一个暴力就可以了 /汗
因为苹果是按输入顺序掉落,所以每次掉到哪里就移过去哪里 - -
然后随便搞搞就A了

var
     n,m,p,l,r,x,i,ans:longint;
begin
     readln(n,m);
     readln(p);
     l:=1; r:=m;
     for i:=1 to p do
     begin
          readln(x);
          if x>r
          then begin
                    ans:=ans+(x-r);
                    l:=l+(x-r);
                    r:=x;
               end;
          if xthen begin
                    ans:=ans+(l-x);
                    r:=r-(l-x);
                    l:=x;
               end;
     end;
     writeln(ans);
end.

你可能感兴趣的:(暴力/枚举/模拟,pascal)