
计算几何
luyuncheng
luyuncheng@sina.com
展开
-
poj2007凸包graham逆时针输出
题意:给出一组点,包含原点,求凸包,并从原点开始按照逆时针方向输出#include#include#include#define MAX 1000using namespace std;struct points{ double x,y;};points p[MAX];int n,l,res[MAX],top;bool cmp(const points &a,原创 2012-10-04 15:49:13 · 568 阅读 · 0 评论 -
la4064
此题卡了我一下午一直tle 后来在jesful大神指导下,对极角排序的单调性质重新理解了下。才ac的此题用补集的性质,将钝角的部分算出来,然后用c(n,3)去剪就可以了。首先将以i点为源点的极角算出来,然后排序,确定第二个点J 在1——(n-1)那么下面的做法就有不同了。我们很容易想到枚举K点使得I J K构成的三角形是钝角。那么这样做法是o(n^3)我就是这样超时的。即使你k点的枚举原创 2013-01-23 01:48:51 · 783 阅读 · 0 评论 -
sgu174 walls 并查集 + 哈希
提议:给定n个墙(线段) 求第一个出现封闭空间的墙编号解析:可以看成无向图上的点的关系,当一个线段连接时如果出现环时候退出,用并查集维护连通性信息,点的映射用hash来做#include#include#include #include#include#define MAXN 400010using namespace std;struct point{ int x原创 2012-10-08 14:12:32 · 606 阅读 · 0 评论 -
poj2069求最小外接球半径 模拟退火
求大神指导啊!此题的delta*的系数0.98是怎么得到的啊!!我是0.95都wa啊!模拟退火好难啊!不会啊!求指导啊!!!#include#include#define MAXN 50#define eps 1e-7using namespace std;struct P{ double x,y,z;}p[MAXN],s;int n;double delta,ans;v原创 2012-10-06 21:41:55 · 1123 阅读 · 0 评论 -
hdu3662 三维凸包的面的个数
#include#include#include#includeusing namespace std;#define N 600#define EPS 1e-8struct tpoint{ double x,y,z; tpoint(){} tpoint(double _x,double _y,double _z):x(_x),y(_y),z(_z){} tpoint op原创 2012-10-06 19:58:13 · 661 阅读 · 0 评论 -
Hdu4195给你三个顶点,这三个点是一个正多边形上的顶点,问这个正多边形最少有多少个边
题意:给出一个正多边形上的三个顶点,求这个多边形至少有几个顶点。每个个正多边形都有一个外接圆,多边形的每条边所对应的圆心角为:1 / i * 2 * pi (i为多边形边数,pi为圆周率) 因此要求多边形的最小顶点数 可以先求出给出的三角形每条边所对应的圆心角(有可能大于pi),然后依次去除3-1000的多边形每条边对应的圆心角 如果三个结果都为整数(这里要注意精度),那么当前的边数就是我们要原创 2012-10-07 16:40:56 · 1625 阅读 · 1 评论 -
poj3528 三维凸包面积
#include#include#include#includeusing namespace std;#define N 600#define EPS 1e-8struct tpoint{ double x,y,z; tpoint(){} tpoint(double _x,double _y,double _z):x(_x),y(_y),z(_z){} tpoint op原创 2012-10-06 19:57:32 · 658 阅读 · 0 评论 -
poj2208 hdu1411 欧拉四面体面积
不知道直接乘的为什么会错!!求大神指教啊!!!错误的可以过杭电的郁闷正确的#include#include#includeusing namespace std;int main(){ double a,b,c,d,e,f; double tr1,tr2,tr3,tr4,temp,ans; while(scanf("%lf%lf%lf%lf%lf%lf",&a,&b原创 2012-10-06 16:23:24 · 870 阅读 · 2 评论 -
hdu1392凸包求周长 graham 3种写法
一开始用两边扫的过不去,后来自己加了初始化就过了,郁闷一晚上。。。凸包求周长。。。两边扫点#include#include#include#define MAX 2000#define eps 1e-9using namespace std;struct points{ double x,y;};points p[MAX];int n,l,res[MAX原创 2012-10-05 14:39:38 · 677 阅读 · 0 评论 -
poj2079凸包求最大三角形面积
一开始参照书上的写法些了一个,后来理解了一下自己写了一个自写的:#include #include #include using namespace std;#define MAXN 50005struct Point{ int x, y; bool operator < (const Point& _P) const { return原创 2012-10-06 14:48:20 · 633 阅读 · 0 评论 -
poj3608 凸包间最近距离 旋转卡壳
网上代码,卡壳部分的实现还未太懂先留着http://blog.sina.com.cn/s/blog_732dd9320100sjtv.html#include#include#include#includeusing namespace std;#define N 10015#define PR 1e-8struct TPoint{ double x,y;原创 2012-10-06 13:34:55 · 1151 阅读 · 0 评论 -
poj2187 凸包+graham+旋转卡壳+最远点对
#include #include #include using namespace std;#define MAXN 50005struct Point{ int x, y; bool operator < (const Point& _P) const { return y<_P.y||(y==_P.y&&x<_P.x); };}p原创 2012-10-06 13:01:17 · 589 阅读 · 0 评论 -
hdu1392凸包求周长
浩哥告诉说要用atan扫点而且只用扫描一遍就好了我用两都扫的方法不知道为什么错了好多次,求高手指教!!下面是我用tan排序ac的代码#include#include#include#define MAX 1000#define eps 1e-12using namespace std;struct points{ double x,y; doubl原创 2012-10-04 19:57:11 · 517 阅读 · 0 评论 -
hdu1348 凸包 jatvis卷包裹法 (此方法时间复杂度O(n^2))
题意:一个国王要求建筑师修一堵墙,围绕他的城堡,且墙与城堡之间的距离总不小于L输入节点和L求周长解析:此题是求凸包但是有变形,因为多了一个L可以这样想,墙除了在顶点处的延生出去是个弧形意外其他的地方求只是延生出去L但是长度不变,剩下的就是求弧长了,接下来可以想象其实所有的弧长加起来是个圆心角360的圆弧,画个长方形类比下就知道了此题输入变态,输出变态,输入根本没说有T 输出要多一个行空行切原创 2012-10-04 14:12:00 · 2553 阅读 · 0 评论 -
hdu3007 zoj1450最小圆覆盖
#include#include#include#include#define maxn 1005using namespace std; struct tpoint{ double x,y; tpoint operator -(const tpoint &a) const { tpoint p1; p1.x=x-a.x; p1.y=y-a.y; return原创 2012-10-04 11:17:39 · 983 阅读 · 0 评论 -
Hdu1348凸包graham——scan法
题意:一个国王要求建筑师修一堵墙,围绕他的城堡,且墙与城堡之间的距离总不小于L输入节点和L求周长解析:此题是求凸包但是有变形,因为多了一个L可以这样想,墙除了在顶点处的延生出去是个弧形意外其他的地方求只是延生出去L但是长度不变,剩下的就是求弧长了,接下来可以想象其实所有的弧长加起来是个圆心角360的圆弧,画个长方形类比下就知道了#include#include#incl原创 2012-10-04 14:38:43 · 922 阅读 · 0 评论 -
hdu1828poj1177线段树周长并
详情请见国家队1999陈宏论文#include#include#includeusing namespace std;struct point{ int x,y;};struct rectangle{ point a,b;};struct node{ int aa,bb;//左右端点值 int left,right;//左右端点编号 int flag原创 2012-10-07 19:52:28 · 678 阅读 · 0 评论