计算几何
crazy852456
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ 2007 Scrambled Polygon(凸包)
给一些点,求出凸包后按极角排序输出,输出的时候第一个是原点。#include#include#include#include#include#include#includeusing namespace std;struct point { int x, y; point () {} point (int x,int y): x(x),y(y) {}}p[100原创 2013-08-19 15:27:28 · 580 阅读 · 0 评论 -
poj 3384 Feng Shui(半平面交)
用两个圆去覆盖多边形,问最多能覆盖多少面积,输出最终两个圆的圆心坐标。把多边形的各边向内推进r距离,因为题目保证输入合法,则推进后必定能形成一个多边形,只要找这个多边形的距离最远的两个点就行了。#include#include#include#include#include#include#include#include#include#define mm(a,b) m原创 2013-09-03 15:58:11 · 656 阅读 · 0 评论 -
poj 1755 Triathlon(半平面交解不等式)
n个人参加铁人三项的比赛,给出他们每一项的速度u,v,w,裁判可以决定每一项的距离,问是否存在一种安排,使得这个人能够赢。对于每个人,如果存在安排的方法就输出Yes,没有就输出No。这里可以假设三段路程分别为x,y,z,则有:t = x/u+y/v+z/w,这里可以把其中一段路程看成是1,假设把z看作1,则t=x/u+y/v+1/w,如果第一个人要赢,则t1-ti0,x/ui+y/vi+1原创 2013-09-03 19:21:19 · 862 阅读 · 0 评论 -
最小圆覆盖
粘个模版。。。#include #include const int maxn = 1005;const double eps = 1e-8;struct TPoint { double x, y; TPoint operator-(TPoint & a) { TPoint p1; p1.x = x - a.x; p1.原创 2013-09-11 16:47:26 · 558 阅读 · 0 评论 -
poj 1375 Intervals(圆外一点到圆的切点)
有一个光源,光源到x轴之间有n个圆,求x轴上的圆的阴影的区间。先求出点到圆的切点,然后根据光源与切点求出直线方程,然后求出直线与x轴的交点,最后判断下线段在x轴上的重叠就行了。#include#include#include#include#include#include#include#include#include#define maxn 505using nam原创 2013-09-05 12:50:19 · 1928 阅读 · 0 评论 -
poj 3405 Convex hull
计算几何虐我千百遍,我待计算几何如初恋啊!!!这题要考虑的情况太多了!!先说下题意:给你n个圆,有的圆的半径可以为0,然后让你用一个凸包把这些圆围起来,并使得凸包的面积最小。思路:有点取极限的思想,先求出每每两个不包含的圆的公切线,然后把一个圆上的两个切点之间的那段弧长当成是凸包的一部分,相当于许多的点连成的凸包的部分,然后连接不同圆的切点,这样就形成题目要求的凸包了,然后就是求面积。最坑原创 2013-09-26 20:13:59 · 851 阅读 · 0 评论 -
hdu 1411 (四面体体积)
四面体ABCD,AB=a,AC=b,AD=c,∠BAC=γ,∠BAD=β,∠CAD=α,则四面体的体积为V=1/6*abc(sin^2α+sin^2β+sin^2γ+2cosαcosβcosγ-2)^(1/2)#include#include#include#include#include#include#include#include#include#define原创 2013-10-30 19:24:44 · 805 阅读 · 0 评论 -
hdu 1174 爆头(点到空间直线距离)
看见这个标题就进去了,然后就水之。。。。#include#include#include#include#include#include#include#include#include#define mm(a,b) memset(a,b,sizeof(a))using namespace std;const int inf=0x7ffffff;const dou原创 2013-10-31 21:41:28 · 631 阅读 · 0 评论 -
poj 3714 Raid(平面最近点对)
给出两个点集,然后求两个点集之间的最近距离。思路:开始用的旋转卡壳,两个点集先求凸包,这样就变成了两个凸包间最近距离,但是死活TLE,然后就换了平面最近点对来做,把两个点集标记一下,判断下是不是在同一个点集里就行了#include #include #include using namespace std; const int N=200002; const doub原创 2013-11-02 12:34:05 · 735 阅读 · 0 评论 -
CF#1C Ancient Berland Circus(正多边形最小面积)
题意:给你三个点,叫你求以这三个点为顶点的正多边形的最小面积。思路:找出以这个三个点为顶点的三角形的外接圆的圆心,则所求的最小面积的正多边形的所有顶点必在这个圆上,然后求这三个点与圆心形成的圆心角,从三个最小的圆心角开始向下枚举角度i,当i是三个圆心角的公约数并且360/i是整数时就跳出,则求出该角度,360/i表示为正几边形,就可以算出最小面积了,这题比较卡精度,枚举以0.000001为单位原创 2013-11-11 21:22:24 · 974 阅读 · 0 评论 -
poj 3525 Most Distant Point from the Sea(半平面交+二分)
求一个凸包内找最大的内切圆的半径,二分圆的半径,每次把凸包的各条边向内推进r,然后再判断推进后是否还是一个凸包。#include#include#include#include#include#include#include#include#include#define mm(a,b) memset(a,b,sizeof(a))#define maxn 205using原创 2013-09-03 14:30:57 · 587 阅读 · 0 评论 -
poj 1279 Art Gallery(半平面交求多边形核面积)
求出多边形的核再求面积。#include#include#include#include#include#include#include#include#include#define mm(a,b) memset(a,b,sizeof(a))#define maxn 1555using namespace std;const int inf=0x7ffffff;c原创 2013-09-02 20:07:10 · 674 阅读 · 0 评论 -
hdu 2823(旋转卡壳+线段相交判断+点在多边形内判断)
题意:给出两个点集p和q,求这两个点集之间的最小距离,如果p与q相交,或者p包含q,或者q包含p,则输出0.0000。思路:先对两个点集各求一次凸包得到s,t两个凸包,用得到的凸包先判断两个凸包是否相交,如果相交则输出0.0000,否则再判断两个凸包是否有包含关系,枚举s上的点是否在t内,如果有就跳出输出0.0000,没有的话再枚举t上的点是否在s内,如果有就跳出输出0.0000,没有的话原创 2013-09-02 16:57:15 · 1224 阅读 · 0 评论 -
poj 2187 Beauty Contest(旋转卡壳)
给出一些平面点集,然后求这个点集中的两点的最大距离。第一道旋转卡壳~~~#include#include#include#include#include#include#includeusing namespace std;struct point{ int x,y; point() {} point(int x,int y): x(x),y(y) {}}p[500原创 2013-08-19 18:32:23 · 523 阅读 · 0 评论 -
poj 2079 Triangle(旋转卡壳)
平面上给出一些点,求这些形成三角形中最大的面积。思路:先求一次凸包,然后在凸包上枚举三角形的第一个顶点i,把其他两个顶点拿来旋转。开始没有考虑到三角形的边可以不是凸包上的边,就当做求凸包直径那样旋转,结果wa到吐。。。。#include#include#include#include#include#include#includeusing namespace std;s原创 2013-08-20 13:06:21 · 1151 阅读 · 0 评论 -
poj 3528 Ultimate Weapon(三维凸包)
直接上模板。。。#include#include#include#include#include#include#include#define eps 1e-7 #define MAXV 505 using namespace std; //三维点 struct pt{ double x, y, z; pt(){} pt(double _x, double原创 2013-08-22 13:53:33 · 694 阅读 · 0 评论 -
poj 3608 Bridge Across Islands(旋转卡壳)
给两个凸包,求出这两个凸包的最近距离。这题wa的我是一塌糊涂啊,说多了都是泪,后来稀里糊涂的就改对了。。。#include#include#include#include#include#include#includeusing namespace std;const double eps=1e-9;struct point{ double x,y; point (原创 2013-08-22 10:47:29 · 638 阅读 · 0 评论 -
SGU 253 判断点在凸包内
贴个模板,极角排序+二分。。。。这个大牛的博客说的很好:http://hi.baidu.com/aekdycoin/item/2d54f9c0fef55457ad00efd6代码来源http://blog.youkuaiyun.com/codeforces_sphinx/article/details/7200301#include #include #include #include #原创 2013-08-12 16:45:48 · 889 阅读 · 0 评论 -
hdu 4667 Building Fence
给出n个圆和m个三角形,然后用篱笆把它们围起来,问需要最短的篱笆长度是多少。这题标称应该是求出每个三角形的每个顶点与每个圆的切点和两两圆之间的切点,然后切点来做凸包,最后把凸包上的点的距离加起来,注意在一个圆上两个点的距离是他们的弧长,我做的时候就直接暴力了,把每个圆拆点,然后把所有点再来做凸包,最后求距离和#include#include#include#include#in原创 2013-08-15 10:58:26 · 700 阅读 · 0 评论 -
hdu 4666 Hyperspace
n维最远曼哈顿距离。。#include#include#include#include#include#include#include#includeusing namespace std;const int inf=0x7ffffff;const int maxn=60010;struct st{ int a[6],b[35];}s[maxn];mult原创 2013-08-15 10:36:54 · 568 阅读 · 0 评论 -
poj 3335 Rotating Scoreboard(半平面交)
第一道半平面交的题,给一个多边形,问是否存在核,http://blog.youkuaiyun.com/accry/article/details/6070621这个博客讲得很好。#include#include#include#include#include#include#include#include#include#define mm(a,b) memset(a,b,sizeof原创 2013-09-02 19:09:10 · 962 阅读 · 0 评论 -
poj 1474 Video Surveillance(半平面交)
基本和poj 3335一样。。。#include#include#include#include#include#include#include#include#include#define mm(a,b) memset(a,b,sizeof(a))#define maxn 105using namespace std;const int inf=0x7ffffff原创 2013-09-02 19:19:54 · 693 阅读 · 0 评论 -
CF 65C Harry Potter and the Golden Snitch(空间向量+二分)
题意:哈利波特要去追一个小偷,小偷沿着一条路线逃走,起点在原点(0,0,0),哈利在(Px,Py,Pz),问哈利能不能在一个时间与小偷同时碰面,如果能输出时间和地点,不能就输出NO。思路:开始直接暴力枚举时间,果断TLE了,然后就想到了二分,先用数组d[i]记录原点到i的总距离,然后二分时间,利用d[]数组找到是在哪一个路段碰面,然后找到 t 时间的坐标,找到最小的时间 t 就是答案。#i原创 2013-12-05 22:49:46 · 1191 阅读 · 0 评论
分享