下落
来源:互联网 发布:网络ip电话 编辑:程序博客网 时间:2024/04/27 07:32
[问题描述]
在直角坐标系上,有一个小球开始从坐标(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轴的秒数。
[题解]
暴力!
[代码]
var xx,yy,n,ans:longint; y,x1,x2:array [0..101] of longint;procedure init;var i:longint;begin readln(xx,yy); readln(n); for i:=1 to n do readln(y[i],x1[i],x2[i]); ans:=yy;end;procedure qsort(l,r:longint);var i,j,mid,t:longint;begin if l>r then exit; i:=l; j:=r; mid:=y[(l+r) div 2]; repeat while y[i]>mid do inc(i); while y[j]<mid do dec(j); if i<=j then begin t:=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;var i:longint;begin for i:=1 to n do if (yy>=y[i]) and (x1[i]<=xx) and (xx<=x2[i]) then begin inc(ans,5); xx:=x2[i]; end; write(ans);end;begin assign(input,'fall.in'); assign(output,'fall.out'); reset(input); rewrite(output); init; qsort(1,n); main; close(input); close(output);end.
0 0
- 下落
- 小球下落
- 旋转下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 数字下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 小球下落
- 猴子下落
- 小球下落
- 小球下落
- jmeter配置
- 彻底解决mysql中文乱码的办法,修改mysql解压缩版(免安装版或zip版)字符编码
- Activity/ViewGroup/View生命周期方法
- 循环的wifi发送
- 超长标题显示及自动消失
- 下落
- sql 如何是表ID 自动增加
- NIO和OIO
- 全屏activity跳转非全屏activity页面抖动问题的解决
- UMEditor上传的图片太大 使编辑器拉伸
- 13. Roman to Integer
- Java 模运算应用
- 一天一条Linux指令-screen
- POJ 3252 E - Round Numbers(数位dp)(模板)