ACwing4309-消灭老鼠
4309. 消灭老鼠
一. 题目详情
约翰的农场可以看作一个二维平面。
农场中有 n 个老鼠,在毁坏着农田。
第 i个老鼠的位置坐标为 (xi,yi)。
不同老鼠可能位于同一位置。
在 (x0,y0)处,装有一个双向发射的激光枪,该位置没有老鼠。
激光枪每次发射都可以将穿过点 (x0,y0) 的某一条直线上的所有老鼠都消灭掉。
请问,为了消灭所有老鼠,至少需要激光枪发射几次。
输入格式
第一行包含三个整数 n,x0,y0表示共有 n 只老鼠,激光枪的位置为 (x0,y0)。
接下来 n 行,每行包含两个整数 xi,yi 表示第 ii 只老鼠的位置为 (xi,yi)。
输出格式
一个整数,表示激光枪的最少发射次数。
数据范围
前 55 个测试点满足 1≤n≤5。
所有测试点满足 1≤n≤1000,−104≤xi,yi≤104。
输入样例1:
1 | 4 0 0 |
输出样例1:
1 | 2 |
输入样例2:
1 | 2 1 2 |
输出样例2:
1 | 1 |
二. 问题梳理
因为激光枪射线是双向发射的,所以此题为经典的直线扫描在四周问题,我们的目光主要集中在如下几个方面
- 怎样表达直线,有斜率截距法、向量法等
- 怎样存储直线
- 怎样判断直线是否已经存在
三. 作者代码
1 | import java.util.HashSet; |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 随意!
评论
ValineDisqus




