Han Solo and Lazer Gun (Codeforces Round #291 (Div. 2)B)
来源:互联网 发布:医疗器械注册 知乎 编辑:程序博客网 时间:2024/06/15 11:43
题目大意:
战场上有n个突击队员,一个枪,战场是一个带有笛卡尔坐标的平面,给出枪的坐标及n个突击队员的坐标,枪一次可以射击贯穿枪的坐标的任一条直线,问要把所有的突击队员全部消灭掉,最少需要射击多少次。
思路分析:
把枪的坐标当做坐标原点,枪每次射击一条直线,那这道题最终也就是求所有的突击队员能连成多少穿过原点的直线,也就是看有多少不同的直线,那也就是看有多少不同的斜率,那么每次读取一个突击队员的坐标,求得这个点和原点构成的直线的斜率,把每次不同的斜率存下来,最后有多少不同的斜率,也就是要射击多少次。
要注意垂直于x轴和垂直于y轴的直线的斜率,以及这个点处于原点的情况。
代码实现:
#include<stdio.h>#include<string.h>#include<math.h>const int maxn=1010;const double eps=1e-10;double k[maxn];int dcmp(double x) { if(fabs(x)<eps) return 0; else return -1;}int main(){ int n; double x0,y0; while(~scanf("%d%lf%lf",&n,&x0,&y0)){ memset(k,0,sizeof(k)); int cnt=0,cnt1=0,cnt2=0,sum=0,flag; double x,y; for(int i=0;i<n;i++){ scanf("%lf%lf",&x,&y); x-=x0,y-=y0; flag=0; if(x==0&&y==0){ cnt1=1; continue; } if(x==0){ cnt1=1; continue; } if(y==0){ cnt2=1; continue; } double kk=y/x; for(int i=0;i<cnt;i++){ int ans=dcmp(kk-k[i]); if(ans==0){ flag=1; break; } } if(flag==1) continue; k[cnt++]=kk; } sum+=(cnt+cnt1+cnt2); printf("%d\n",sum); }}
0 0
- Codeforces Round #291 (Div. 2) -- B. Han Solo and Lazer Gun (计算几何~暴力)
- Han Solo and Lazer Gun (Codeforces Round #291 (Div. 2)B)
- Codeforces Round #291 (Div. 2) Han Solo and Lazer Gun
- Codeforces Round #291 (Div. 2) Han Solo and Lazer Gun
- Codeforces Round #291 (Div. 2) B. Han Solo and Lazer Gun
- Codeforces Round #291 (Div. 2)---B. Han Solo and Lazer Gun
- CodeForces 514B Han Solo and Lazer Gun
- CodeForces 518B - Han Solo and Lazer Gun
- CodeForces - 514B Han Solo and Lazer Gun
- Codeforces 514B Han Solo and Lazer Gun【思维】
- B. Han Solo and Lazer Gun
- B. Han Solo and Lazer Gun
- B. Han Solo and Lazer Gun
- Han Solo and Lazer Gun
- Codeforces 514 B . Han Solo and Lazer Gun 精度 除0
- B. Amr and Pins( Codeforces Round #287 (Div. 2))
- B. Vanya and Books(Codeforces Round #308 (Div. 2))
- (Vanya and Lanterns)Codeforces Round #280 (Div. 2)B
- 南邮NOJ1009 2的n次方
- <mvc:resources />标签新老版本解析不同,是bug还是?
- Hibernate中对象的三种状态
- 学习笔记:WPF之Binding深入探讨
- python 中的OptionParser的使用例子
- Han Solo and Lazer Gun (Codeforces Round #291 (Div. 2)B)
- 如何为 SpringMVC 编写单元测试:从配置开始
- 关于网络通信
- 第一次接触 selenium
- 关于python的_init_()方法的一点解释
- Android SDK下载异常 的解决
- BestCoder #Valentine's Day Round 1001 || hdu 5174
- ViewPager中图片的动态删除
- 超越时空--读书感