计算几何
傻笨
这个作者很懒,什么都没留下…
展开
-
hdu 1115 多边形重心
#include #include #include #include using namespace std;struct node{ double x; double y;};double area(node p1,node p2,node p3){ double ans; ans=p1.x*p2.y+p2.x*p3.y+p3.x*p1原创 2013-08-01 20:54:35 · 458 阅读 · 0 评论 -
HDU 2202 求最大三角形
其实这题和poj中一个题目很像,这题是一些散点,求最大三角形面积,而poj里有一题是求两点之间最大距离!思路都是一样的,点都在凸包这线上,然后利用凸包公式,和多边形面积公式!代码如下:#include #include #include #include #include #include using namespace std;const int maxn=50005;int原创 2013-08-08 19:03:09 · 640 阅读 · 0 评论 -
poj 2187 凸包+平面上点之间最大距离
/* 这道题目是算一个平面内的一些点的之间最大的距离,暴力肯定会超时,最远距离,一定是凸包上的两个点的距离, 先用模板找到凸包线上的点,然后枚举任意两点之间的距离,求出最大的距离!*/#include #include #include #include #include using namespace std;const int maxn=50005;int n;原创 2013-08-08 14:58:41 · 676 阅读 · 0 评论 -
poj 3348
这题其实是一个简单的模板题,可我就纠结了好久!哎/* 这题就是凸包模板加多边形面积模板!*/#include #include #include #include #include using namespace std;const int maxn=10005;int n;struct point{ double x;原创 2013-08-08 09:28:05 · 624 阅读 · 0 评论 -
poj 2007 极角排序
极角排序有四种方法,我一开始就是先算出极角来,然后进行排序,可交上去却是WA,现在还没有搞,后面用另一种还是错了,最后用了这种才过的!代码如下:#include #include #include #include #include using namespace std;const int maxn=55;struct point{ double x,y;} p原创 2013-08-08 13:47:44 · 611 阅读 · 0 评论 -
HDU 3775 pick 定理
这道题目也是用到了pick定理,不过这里有一个巧妙的地方,就是在直线上的整点数,就是字符串的长度,因为每一次一步,都是整数,这题还有好多坑人的地方:#include #include #include #include using namespace std;const int maxn=1000005;char c[maxn];int a[8]= {1,1,0,-1,-1,原创 2013-08-07 09:14:08 · 624 阅读 · 0 评论 -
POJ 2954
第二道 用到pick定理的题目,一直错在一个地方了,后来才发现,代码:#include #include #include #include using namespace std;int gcd(int a,int b){ if(!a || !b) { return a>b?a:b; } else { r原创 2013-08-06 21:52:58 · 617 阅读 · 0 评论 -
POJ 1654
这题目一开始就没有看懂,后来比赛结束后,看别人的报告,才知道什么意思,:在一个矩阵上面,一开始位于原点,现在你可以往8个方向走,每次走1个单位(上下左右)或者根号2个单位(其他四个方向)。现在给你每次走的方向,(保证最后回到原点)。问你做过的边多围成的多边形的面积是多少。1:西南 2:南 3:东南 4:西 5: 不走 6: 东 7:西北 8:北 9:东北 代码:#include原创 2013-08-06 16:40:46 · 520 阅读 · 0 评论 -
poj 1265 多边形面积
今天做这个让我学到了一个pick 定理:pick定理: 设F为平面上以格子点为定点的单纯多边形,则其面积为:S=b/2+i-1。 b为多边形边上点格点的个数,i为多边形内部格点的个数。 可用其计算多边形的面积,边界格点数或内部格点数。代码和解析如下:#include #include #include #inclu原创 2013-08-06 19:38:33 · 567 阅读 · 0 评论 -
POJ 2398
这道题目和上一道真是姐妹题目啊!就是多了一个排序,因为2318这题已经排好序了,而这题是没有排好序的!代码如下:#include #include #include #include using namespace std;const int maxn=1005;int num[maxn];int n,m;struct point{ d原创 2013-08-04 17:09:47 · 501 阅读 · 0 评论 -
POJ 2318
这是一道计算几何题,题意大概是:在一个大矩形里有n条分割线把矩形分割成n+1部分、再给出一些玩具的坐标、要求统计每个部分内有多少个玩具、思路:利用二分N个区域来,然后利用叉乘来判断是不是在其区域类!这里要利用叉乘的一个性质:(1)P*Q>0,P在Q的顺时针 (2)P*Q==0 ,P和Q共线 (3)P*Q<0, P在Q的逆时针代码如下:#include #include #inc原创 2013-08-04 11:29:38 · 699 阅读 · 0 评论 -
HDU 1086 判断线段相交
/* 判断线段相交利用叉乘, 因为 两向量叉乘==两向量构成的平行四边形(以两向量为邻边)的面积 , 所以上面的公式也不难理解.而且由于向量是有方向的, 所以面积也是有方向的, 通常我们以逆时针为正, 顺时针为负数.改良算法关键点就是:如果"线段ab和点c构成的三角形面积"与"线段ab和点d构成的三角形面积" 构成的三角形面积的正负符号相异,那么点c和点d位于线原创 2013-08-02 18:26:46 · 570 阅读 · 0 评论 -
POJ 3907
这是一道求多边形面积的题目,很水的!不过我好像又学到了新的知识点!#include #include #include #include #include using namespace std;const int maxn=105;int n;struct node{ double x; double y;} p[maxn];double solve(原创 2013-08-02 19:53:36 · 685 阅读 · 0 评论 -
poj 1269 判断直线相交,并求交点
#include #include #include #include #include using namespace std;#define EPS 1e-9#define inf 1e10int n;bool pp(double x1,double x2)//这里是由于精度的问题,判断是否相等{ if(abs(x1-x2)<EPS) retur原创 2013-08-02 18:30:51 · 615 阅读 · 0 评论 -
HDU 2036 多边形的面积
以下两种方法求多边形面积:一:#include #include #include #include #include using namespace std;const int maxn=105;int n;struct node{ double x; double y;}p[maxn];double area(node p[],int n){原创 2013-08-01 21:31:44 · 525 阅读 · 0 评论 -
HDU 1392 凸包入门题目,求周长
这题就是凸包入门题目,求凸包周长#include #include #include #include #include using namespace std;const int maxn=105;struct point{ double x; double y; double there;} p[maxn],chs[maxn];boo原创 2013-08-08 16:53:38 · 506 阅读 · 0 评论