题目名称 2578. 激光
输入输出 lasers.in/out
难度等级
时间限制 1000 ms (1 s)
内存限制 256 MiB
测试数据 11
题目来源 Gravatarmouse 于2016-12-23加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:1, 提交:2, 通过率:50%
Gravatar农场主 100 0.608 s 161.29 MiB C++
GravatarMealy 18 3.009 s 0.39 MiB C++
本题关联比赛
20161223
关于 激光 的近10条评论(全部评论)
sro FarmerJohn orz
很惭愧,当时写的时候有点慌,代码太ugly了
Gravatar农场主
2016-12-23 19:51 2楼
sro FarmerJohn orz
很惭愧,当时写的时候有点慌,代码太ugly了
Gravatar农场主
2016-12-23 19:51 1楼

2578. 激光

★   输入文件:lasers.in   输出文件:lasers.out   简单对比
时间限制:1 s   内存限制:256 MiB

【题目描述】


不知道什么原因,农夫John的奶牛们似乎总是热衷于激光秀。

在它们最近的一次秀场中,奶牛们发现了一个强大的激光发射器——它实在是太大了,以至于它们似乎根据不可能轻易地将这台发射器从它的放置地点移动位置。所以它们想要找到一种方法将激光发射器发射出的激光送到位于农场另一边的牛棚中。若将John的农场视作是一张二维地图,则发射器和牛棚的位置都可以看作这个平面图上的两个点。奶牛们计划引导一束激光在水平或者垂直的方向上传输(即沿x轴和y轴传输),然后可以通过在地图上某些点放置一些镜子用于将激光从发射器反射到牛棚。

在农场中有N个篱笆桩(1<=N<=100,000),分布在地图上(区别于激光发射器和牛棚的坐标),奶牛们可以在这些桩上放置镜子。奶牛们可以选择不放置镜子,则激光会沿直线方向传输;如果奶牛们放置了镜子,则镜子会呈45度倾斜旋转,即“/”和“\”,所以可以引导激光从原来水平的方向转变为垂直的方向,或者将垂直转变为水平。

请计算,在保证激光能正确地引导到牛棚的前提下,如何使得所用镜子的数量最少。



【输入格式】


第一行有5个由空格分隔开的整数:N,xL,yL,xB,yB,其中(xL,yL)表示激光发射器的坐标,(xB,yB)表示牛棚的所在的坐标,它们的取值范围均在[0..1,000,000,000]。

接下来的N行,每行由两个数字x,y组成,表示可以放置镜子的篱笆桩所在点的坐标,且范围为[0..1,000,000,000]。


【输出格式】

可以实现激光从发射器到牛棚所使用的最小数量的镜子,若不可能实现则输出-1。

【样例输入】

4 0 0 7 2
3 2
0 2
1 6
3 0

【样例输出】

1

【提示】

在此键入。

【来源】

在此键入。