题目链接:http://codeforces.com/problemset/problem/514/B

题目意思:给出双头枪的位置(x0, y0),以及 n 个突击队成员的坐标。双头枪射击一次,可以把它对住的方向(是直线,不是射线,因为是双头嘛)所有的人射杀掉。问将所有突击队成员消灭的最少射击数是多少。

首先要清楚的是,双头枪可以瞄准的方向是无限的,所以通过枚举所有方向是不现实的!方向其实就是对应斜率,但是没有理由把函数求出然后将士兵的位置一个一个代入来做吧~~~所以呢,直接求 k 就可以了,k 表示枪(x0, y0)和任意士兵(x, y)的斜率。即 k =(y - y0)/ (x - x0)

做的过程中要注意两个问题。 (1)k 有可能除不尽,所以要用 double 来保存。 (2)x - x0 有可能等于0,除数不能为 0 的!!但是也属于可行的一个方向,要单独判断,统计到答案中的其中一个解里。保存完所有 k 之后,去重后统计有多少个不同的 k 就是问题答案了。

  其实还有一个地方有点疑问,就是浮点数比较。本来打算用精度控制,毕竟比较的时候用 “ = ”多少是有一点误差的,但居然过了,可能数据比较弱吧,这个不太清楚,希望有能之士可以指点指点,不胜感激 [^__^]

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
using namespace std; const int maxn = + ;
double k[maxn]; int main()
{
#ifndef ONLINE_JUDGE
freopen("in.txt", "r", stdin);
#endif // ONLINE_JUDGE int n;
int x0, y0, x, y;
while (scanf("%d%d%d", &n, &x0, &y0) != EOF) {
int cnt = ;
int f = ;
int ans = ;
for (int i = ; i < n; i++) {
scanf("%d%d", &x, &y);
double tx = x - x0;
double ty = y - y0;
if (tx == && !f) {
ans++;
f = ;
}
else if (tx != )
k[cnt++] = ty / tx; // 注意 cnt 不一定等于 n
} sort(k, k+cnt);
for (int i = ; i < cnt; i++) {
while (k[i] == k[i+] && i < cnt)
i++;
ans++;
}
printf("%d\n", ans);
}
return ;
}

最新文章

  1. 读书笔记--SQL必知必会12--联结表
  2. SQL Server 2014 Database Mail重复发送邮件特殊案例
  3. 【JavaScript】ArtTemplate个人的使用体验。
  4. 3 Git服务器搭建
  5. FMDB 数据库
  6. Oracle job procedure 存储过程定时任务
  7. 用css画出对话框
  8. [MAC] SVN lock的使用
  9. 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目
  10. 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树
  11. js 中 setInterval 的返回值问题
  12. hdu 六度分离 floyd
  13. SQL Server 之 解锁
  14. OK335xS dhcpcd porting
  15. mybatis generator自动生成 实体类, sqlmap配置文件 详细介绍
  16. 机器人api(图灵机器人)
  17. tabbar - 取消系统渲染
  18. 使用Java操作文本文件的方法详解
  19. Powerdesigner 连接mysql 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014
  20. django中如何实现分页功能

热门文章

  1. Javascript设计模式详解
  2. Nginx如何隐藏index.html
  3. SQL 获取查询IO信息
  4. spring缓存Ehcache(入门2)源码解读
  5. 【Solr】索引库查询界面详解
  6. 清北暑假模拟day1 艳阳天
  7. Spotlight on oracle
  8. BZOJ1932——[Shoi2007]Setstack 集合堆栈机
  9. jQuery源码笔记(一):jQuery的整体结构
  10. 使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments