计算几何
文章平均质量分 75
leolin_
这个作者很懒,什么都没留下…
展开
-
poj 2187【凸包求最远距离】
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespa原创 2011-07-21 22:15:51 · 555 阅读 · 0 评论 -
【凸包】hdu 3285
因为常规的凸包是逆时针存的,所以只要找出左上角的点,然后逆着回去就ok!原模板没判断共点情况,害得wa了n次!!!#include#include#include#include#include#include#include#include#include原创 2011-08-27 22:28:00 · 557 阅读 · 0 评论 -
【几何模拟】hdu 3286
暴力不解释#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includ原创 2011-08-29 20:45:04 · 566 阅读 · 0 评论 -
计算三角形面积
方案一:三角形面积=底*高/2。方案二:三角形面积=sinA*b*c/2.sinA=sqrt(1-cosA*cosA);cosA根据余弦定理:CosA=(c^2+b^2-a^2)/2bc;缺点:中间因为浮点型的转换,浮点型相除,开根号,造成误差偏大。方案三:海伦公式S=√[p(p-a)(p-b)(p-c原创 2012-02-21 21:30:35 · 1494 阅读 · 0 评论 -
【单位圆覆盖最多点】POJ 1981
经典几何体,求单位圆最多覆盖点数。这里用O(n^3)算法,闻说有O(n^2*logn),但不会搞。方法:枚举任意两点,以此为弦做新圆,(ps:不能以弦中心做圆,因为这圆不是最大的)接着就枚举所有点,求出最大值。#include #include #include #include #include #include #include #include #includ原创 2011-09-04 21:08:32 · 1895 阅读 · 0 评论 -
【几何】2011 regional Beijing Site B——Hou Yi's secret——hdu 4082
注意重点&三点共线的情况。还有蛋疼的精度!#define N 20#define eps 1e-8struct node { int x,y;}p[N];struct edge { double l[3];};edge tri[3*N*N];bool dd(double x,double y) { return fabs( x - y ) < eps;} d原创 2011-10-30 01:09:50 · 648 阅读 · 0 评论 -
【定径圆覆盖最多点模板】
#define eps 1e-9#define pi acos(-1.0)#define N 222struct point{ double x,y;}p[N];struct alpha{ double v; bool flag; bool friend operator <(const alpha &a,const alpha &b){//排序专用偏序关原创 2012-03-24 01:27:17 · 1386 阅读 · 0 评论 -
叉积的作用
在三维向量空间中 , 假设a和b是两个向量, 那么它们的叉积c=aXb可如下严格定义。 (1)|c|=|a×b|=|a||b|sin (2)c⊥a, 且c⊥b, (3)c的方向要用“右手法则”判断(用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c的方向)。叉积的一个非常重要性质是可原创 2012-02-21 21:36:54 · 986 阅读 · 0 评论 -
【叉乘判相交】
常用叉乘来判断两线段或两直线是否相交。假设a和b是两个向量, 那么它们的叉积c=aXb可如下严格定义。 |c|=|a×b|=|a||b|sin,那么我们可以利用sin的正负来判断B线段一端点在A线段的左还是右,注意:判断线段相交要利用4个端点做叉乘,如图所示若 P × Q > 0 , 则P在Q的顺时针方向。若 P × Q 若 P × Q = 0 , 则P原创 2011-08-18 20:59:42 · 1515 阅读 · 0 评论 -
【O(nlgn)判定点在凸包内】Codeforces Round #113 (Div. 2) B
思路参考了这个bloghttp://hi.baidu.com/aekdycoin/blog/item/7abf85026f0d7e85d43f7cfe.html复杂度是O(nlgn)#define N 100005struct node{ double x,y;}a[100005];double cross(node a,node b,node c){//>0,ab在ac原创 2012-03-29 02:00:09 · 730 阅读 · 0 评论 -
Graham's Scan法求解【 凸包 】问题
概念凸包(Convex Hull)是一个计算几何(图形学)中的概念。用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有点的。严谨的定义和相关概念参见维基百科:凸包。这个算法是由数学大师葛立恒(Graham)发明的原创 2011-07-26 01:02:33 · 821 阅读 · 0 评论 -
zoj 2551 判线段相交
#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespa原创 2011-07-22 02:56:14 · 442 阅读 · 0 评论 -
zoj 2325 线段相交
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2325本题可以直接排序再算可以看到全部的那段线段长度,也可以用相似三角形来做,我选择后者具体方法:先把障碍物按x从小到大排序,然后就遍历,令top=L.x1原创 2011-07-22 02:32:09 · 481 阅读 · 0 评论 -
poj 1873【凸包+位运算枚举】
http://www.cnblogs.com/woodfish1988/archive/2008/09/08/1287166.html今天终于学会用二进制的位运算来枚举。。。#include#include#include#include#include#include原创 2011-07-25 18:17:23 · 578 阅读 · 0 评论 -
poj 1228 判唯一凸包
http://poj.org/problem?id=1228题目大意是给你n个点,问能否确定唯一凸包;因为这些点都是边界点,只要判断每一边界是否有>=3个点,有就YES,没就NO。为什么呢?因为假设存在两个点,也就是说只有线段的两个端点,那么线外可以存在任意一点,形成不唯一的新凸原创 2011-07-26 01:28:03 · 521 阅读 · 0 评论 -
poj 3304 Segments
http://poj.org/problem?id=3304题意是问是否存在一条直线,使得所有线段在这直线上的投影都有至少一个公共点。我们假设存在这样的一条直线,在直线公共部分作一垂线,那么垂线必定过所有的线段,所以,我们可以反过来考虑,那么题目就变成求是否存在一直线过所有的线段原创 2011-07-20 03:42:51 · 462 阅读 · 0 评论 -
【3维凸包+模板】
主要讲了两个算法:包裹法和增量算法。 个人感觉增量法比较好,整个过程只用到了+-*这集中运算,不涉及实数运算。 包裹法:首先确定一条一定为凸包上的线段,然后由这条线段为轴,像包纸一样的往顺时针(逆时针)包,碰到的第一个点就是凸包上的点,这时候又可以确定两条直线,递原创 2011-09-01 20:57:03 · 640 阅读 · 0 评论 -
【几何---正方形覆盖】hdu 4007
暴力,先确定左右边界,再遍历y,注意剪枝#include #include #include #include #include #include #include #include #include #include #include #inclu原创 2011-09-04 17:33:21 · 637 阅读 · 0 评论 -
【计算几何——直线相交】POJ 1039
黑书例题#define eps 1e-9#define pi acos(-1.0)struct Point{ double x,y;};int dbl_cmp(double d){ if (fabs(d)<eps) return 0; return d>0?1:-1;}double det(double x1,double y1,doubl原创 2012-03-29 21:22:36 · 871 阅读 · 0 评论