下落
[問題描述]
在直角坐標系上,有一個小球開始從坐標(x,y) x>0,y>0 處直線下落,每一秒鐘一個單位距離,一直到X軸為止。然而,它可能在下落過程中碰到一些障礙物。障礙物可以看成是一些平行于X軸的水平線段,如果小球的Y坐標和障礙物的Y坐標相等,而X坐標在障礙物的兩個端點X坐標之間(包括兩個端點),這樣小球就會延時5秒然后從障礙物的右端繼續下落。
現給出小球的初始坐標 (x,y) ,以及每個障礙物的數據(三個整數 y x1 x2,分別表示這個障礙物的Y坐標,左、右端點的X坐標),編程求小球要幾稱鐘才能到達X軸上。
[輸入文件:fall.in]
第一行有兩個整數x y表示小球初始坐標,1<=x,y<=1000。第二行有一個整數n(n<100),表示有n個障礙物。
下面有n行,每行三個整數(都在1到999之間),分別表示一個障礙物的數據(y x1 x2),其中x1<=x2。障礙物的高度都不相同。
[輸出文件:fall.out]
只一個整數,小球下落到X軸的秒數。
[題解]
暴力!
[代碼]
varxx,yy,n,ans:longint;y,x1,x2:array [0..101] of longint; procedure init; vari:longint; beginreadln(xx,yy);readln(n);for i:=1 to n doreadln(y[i],x1[i],x2[i]);ans:=yy; end;procedure qsort(l,r:longint); vari,j,mid,t:longint; beginif l>r then exit;i:=l; j:=r;mid:=y[(l+r) div 2];repeatwhile y[i]>mid do inc(i);while y[j]<mid do dec(j);if i<=j thenbegint:=y[i]; y[i]:=y[j]; y[j]:=t;t:=x1[i]; x1[i]:=x1[j]; x1[j]:=t;t:=x2[i]; x2[i]:=x2[j]; x2[j]:=t;inc(i); dec(j);end;until i>j;qsort(i,r);qsort(l,j); end;procedure main; vari:longint; beginfor i:=1 to n doif (yy>=y[i]) and (x1[i]<=xx) and (xx<=x2[i]) thenbegininc(ans,5);xx:=x2[i];end;write(ans); end;beginassign(input,'fall.in');assign(output,'fall.out');reset(input);rewrite(output);init;qsort(1,n);main;close(input);close(output); end.轉載于:https://www.cnblogs.com/zyx-crying/p/9319550.html
總結
- 上一篇: [转]正确配置Linux系统ulimit
- 下一篇: 如何通过apk获得包名及Activiy