codeforces 514B. Han Solo and Lazer Gun 解题报告
2024-10-20 00:23:57
题目链接: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 ;
}
最新文章
- 读书笔记--SQL必知必会12--联结表
- SQL Server 2014 Database Mail重复发送邮件特殊案例
- 【JavaScript】ArtTemplate个人的使用体验。
- 3 Git服务器搭建
- FMDB 数据库
- Oracle job procedure 存储过程定时任务
- 用css画出对话框
- [MAC] SVN lock的使用
- 【Pro ASP.NET MVC 3 Framework】.学习笔记.11.ASP.NET MVC3的细节:概览MVC项目
- 浅谈算法和数据结构: 七 二叉查找树 八 平衡查找树之2-3树 九 平衡查找树之红黑树 十 平衡查找树之B树
- js 中 setInterval 的返回值问题
- hdu 六度分离 floyd
- SQL Server 之 解锁
- OK335xS dhcpcd porting
- mybatis generator自动生成 实体类, sqlmap配置文件 详细介绍
- 机器人api(图灵机器人)
- tabbar - 取消系统渲染
- 使用Java操作文本文件的方法详解
- Powerdesigner 连接mysql 在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 SQLSTATE = IM014
- django中如何实现分页功能
热门文章
- Javascript设计模式详解
- Nginx如何隐藏index.html
- SQL 获取查询IO信息
- spring缓存Ehcache(入门2)源码解读
- 【Solr】索引库查询界面详解
- 清北暑假模拟day1 艳阳天
- Spotlight on oracle
- BZOJ1932——[Shoi2007]Setstack 集合堆栈机
- jQuery源码笔记(一):jQuery的整体结构
- 使用C++扩展Python的功能 转自:http://blog.csdn.net/magictong/article/details/8897568#comments