RQNOJ 轰炸
来源:互联网 发布:知乎经典问答荟萃 编辑:程序博客网 时间:2024/04/19 23:36
题目描述
“我该怎么办?”飞行员klux向你求助。
事实上,klux面对的是一个很简单的问题,但是他实在太菜了。
klux要想轰炸某个区域内的一些地方,它们是位于平面上的一些点,但是(显然地)klux遇到了抵抗,所以klux只能飞一次,而且由于飞机比较破,一点起飞就只能沿直线飞行,无法转弯。现在他想一次轰炸最多的地方。
输入格式
输入数据由n对整数组成(1<n<700),每对整数表示一个点的坐标。没有一个点会出现两次。
输出格式
一个整数,表示一条直线能覆盖的最多的点数。
样例输入
5
1 1
2 2
3 3
9 10
10 11
样例输出
3
题解
rqnoj也是很逗,网页上竟然没有“5”,害得我wa了n次。
这一题要注意的是:除法会很慢,所以要用标准式中的a,b,c判定三点是否共线。
数据太水,所以这是暴力。
#include<cstdio>#include<iostream>#include<cstring>#include<cstdlib>#include<cmath>using namespace std;struct point{int x,y;} p[710];int solve(int n) { int a, b, c, counts, ans = -1; for(int i=1;i<=n;i++) for(int j=i+1;j<=n;j++){a=p[j].y-p[i].y; //一般直线方程系数 b=p[i].x-p[j].x; c=p[i].y*p[j].x-p[i].x*p[j].y; counts=0; for(int k=1;k<=n;k++){if (a*p[k].x+b*p[k].y+c == 0) ++counts; } ans=max(counts,ans); } return ans;} int main() { int n; scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d%d", &p[i].x, &p[i].y); int ans = solve(n); printf ("%d\n", ans); return 0;}
0 0
- RQNOJ 轰炸
- 【计算几何】【RQNOJ】轰炸
- [Rqnoj-150]轰炸
- 轰炸
- 轰炸
- 【模拟】轰炸
- 【u209】轰炸
- P1142 轰炸
- rqnoj-332 & rqnoj-53
- 如何实施手机短信轰炸
- 【枚举优化】轰炸
- QQ2006消息轰炸
- 电话轰炸器
- 【模拟试题】轰炸(BSOI1034)
- 如何防止短信轰炸
- swustoj轰炸(0129)
- 【学校联考】CQYZ_Vijos_P3755 轰炸
- 【NOIP2017提高组】轰炸
- Eclipse 下的 java开发的资源文件的处理
- 虚拟机 apache CGI
- Hbase理论知识详解
- IOS笔记
- 移动设备的常见安全问题以及防范措施
- RQNOJ 轰炸
- 后缀数组问题
- 10055-Hashmat the Brave Warrior
- Eclipse 各版本版本号代号对应一览表
- 张成亮这一病
- 在多线程情况下 局部变量与全局变量 哪个比较安全呢
- Hadoop调优
- 5U服务器
- java gc的log分析