轰炸——运用直线方程,可能也算是平面计算几何

  用直线的标准方程推导一下,再枚举各点成为原点,可以快速判断某点是否在直线上。

 1 #include<cstdio>
 2 struct point{int x,y;}p[710];
 3 int n,cnt,ans;
 4 int main(){
 5     scanf("%d",&n);
 6     for(int i=1;i<=n;i++)scanf("%d%d",&p[i].x,&p[i].y);
 7     ans=0;
 8     for(int i=1;i<n;i++)
 9         for(int j=i+1;j<=n;j++){
10             int dx,dy,t;
11             cnt=0;
12
13             dx=p[j].x-p[i].x;
14             dy=p[j].y-p[i].y;
15             t=dx*p[i].y-dy*p[i].x;
16
17             for(int k=1;k<=n;k++)cnt+=(dy*p[k].x-dx*p[k].y+t==0);
18
19             if(ans<cnt)ans=cnt;
20         }
21     printf("%d\n",ans);
22     return 0;
23 }

Method_01

  洛谷 907ms

时间: 2025-01-11 19:21:11

轰炸——运用直线方程,可能也算是平面计算几何的相关文章

C++实现常用的平面计算几何问题求解

通过封装常用的点.线段类型,并提供点.线间的相互关系运算,为计算几何工具库的编写提供基础框架. 代码如下:(代码正确性仍需测试,谨慎使用) //参考 //http://dev.gameres.com/Program/Abstract/Geometry.htm //http://zhan.renren.com/jisuanjihe?from=template&checked=true /* toolbox: Geometry algorithm toolbox author: alaclp ema

2014山东省“浪潮杯”第五届ACM省赛总结

一次比赛做一次总结,弱菜又来总结了-- 我这种大四的又死皮赖来混省赛了,貌似就我和山大威海的某哥们(不详其大名)了吧.颁奖前和他聊天,得知他去百度了,真是不错,ORZ之. 比赛流水账: 题目目前不知道哪有,过几天填坑. 没发题目前,我们赌A题可能是水题,由于我是主coder,我去读A,剩下的一个从前往后,一个从后往前. 结果--,看到A有一个貌似是几何的图--,我还是硬头皮读了.读到一半,3分钟刷榜,发现E有出,让ZK读E,ZK先告诉我了B题题意,转而读E.B题是一个有环形关系的期望,我扫了一下

【bzoj2961】 共点圆

http://www.lydsy.com/JudgeOnline/problem.php?id=2961 (题目链接) 题意 按照一定的顺序给出一些圆和一些点,对于每一个点问是否在所有圆内. Solution 我算是明白计算几何题是有多蛋疼了. 圆包含点$(x_0,y_0)$的条件:$$x*x+y*y>=(x-x_0)*(x-x_0)+(y-y_0)*(y-y_0)$$ $$-2x_0+x_0^2+y_0^2<=2y_0y$$ 题目只说圆心的纵坐标大于$0$,气的我吐出一口老血.所以根据$y_

计算几何 平面最近点对 nlogn分治算法 求平面中距离最近的两点

平面最近点对,即平面中距离最近的两点 分治算法: int SOLVE(int left,int right)//求解点集中区间[left,right]中的最近点对 { double ans; //answer 0)    调用前的预处理:对所有点排序,以x为第一关键词y为第二关键字 , 从小到大; 1)    将所有点按x坐标分成左右两部分; /*      分析当前集合[left,right]中的最近点对,有两种可能: 1. 当前集合中的最近点对,点对的两点同属于集合[left,mid]或同属

HDU2050 折线分割平面【递推】【计算几何】

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2050 题目大意: 求N条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线 最多可以将平面分成7部分,具体如下所示. 思路: 直线分割平面时,每增加N个结点,增加N+1个面.设f(N)是N条直线所能分成最多个面的个数. 则f(N) = f(N-1) + N,且f(1)= 2,推得:f(N) = N*(N+1)/2+1.当N为折线节点时, L(N) = f(2*N) - 2*N.因

与平面和空间打交道的计算几何

计算几何基础 Jack Straws(POJ 1127) 原题如下: Jack Straws Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 5494 Accepted: 2504 Description In the game of Jack Straws, a number of plastic or wooden "straws" are dumped on the table and players try

挑战程序设计竞赛 3.6 与平面和空间打交道的计算几何

POJ 1981:Circle and Points /* 题目大意:给出平面上一些点,问一个半径为1的圆最多可以覆盖几个点 题解:我们对于每个点画半径为1的圆,那么在两圆交弧上的点所画的圆,一定可以覆盖这两个点 我们对于每个点计算出其和其它点的交弧,对这些交弧计算起末位置对于圆心的极角, 对这些我们进行扫描线操作,统计最大交集数量就是答案. */ #include <cstdio> #include <algorithm> #include <cmath> #incl

UVA - 12301 - An Angular Puzzle (计算几何~平面三角)

题目地址:点这里 思路:可以先确定A,B的坐标,然后再通过确定向量来硬算出角度..好像可以推公式做,没推出来╮(╯_╰)╭ AC代码: #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> using namespace std; const double PI = 4 * atan(1.0); struct P

【转】计算几何题目推荐

打算转下来好好做计算几何了. 原文地址:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中.之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠.3.要注意代码的组织,因为计算几何的题目很容易上两百行