随笔分类 - 数学--计算几何
摘要:链接套模板不知道有没有x,y=0情况,不过这种情况都按+号输出的。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespac...
阅读全文
摘要:double dis(Point a){ return a.x*a.x+a.y*a.y;}struct Circle Circumcircle(){ Circle tmp; double a,b,c,c1,c2; double xa,ya,xb,yb,xc,yc; a ...
阅读全文
摘要:链接算不上几何的水题第一种为(int)a*(int)b;第二种分宽高交换两种讨论。每一个的高度除第一个为1外其它的都可以看着b/sqrt(3.0)/2; 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #inc...
阅读全文
摘要:摘自http://blog.csdn.net/accry/article/details/6070621首先解决问题:什么是半平面?顾名思义,半平面就是指平面的一半,我们知道,一条直线可以将平面分为两个部分,那么这两个部分就叫做两个半平面。然后,半平面怎么表示呢?二维坐标系下,直线可以表示为ax +...
阅读全文
摘要:链接求出三角形的外接圆,通过圆心和半径可以知道这个圆的上下左右最远点,分别判断这个四个点跟弧的两端点A,B的关系,假如判断P点,弧内给出点为C,判断PC是否与AB相交即可判断出P是否在弧上。精度问题 ceil-eps floor+eps 1 #include 2 #include 3 #in...
阅读全文
摘要:链接Pick定理是说,在一个平面直角坐标系内,如果一个多边形的顶点全都在格点上,那么这个图形的面积恰好就等于边界上经过的格点数的一半加上内部所含格点数再减一。pick定理的一些应用题意不好懂,给出的x,y并不是坐标而是向x轴方向y轴方向移动的距离。 1 #include 2 #include 3 ...
阅读全文
摘要:链接几何的简单题,建立坐标,判断相等以及不共线 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using namespac...
阅读全文
摘要:double cross(Point a,Point b){ return a.x*b.y-a.y*b.x;}double mul(Point p0,Point p1,Point p2){ return cross(p1-p0,p2-p0);}double dis(Point a){ ...
阅读全文
摘要:链接顺便整理出来一份自己看着比较顺眼的模板 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 using namespace ...
阅读全文
摘要:链接很纠结的找到了所有线段的中点,又很纠结的找到了哪些中点可以直接相连,最后bfs一下求出了最短路。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include ...
阅读全文
摘要:链接之前刷poj计划时刷过,不过也没什么印象了。打铁还是趁热,还没热起来就放弃了,前面算是做了无用功,有如胡乱的看解题报告一样。题目应该是比较经典的集合入门题,黑书上有一部分核心讲解。题目中的最优光线必是要经过端点,这个黑书上提到了,应该也可以想到,然后就可以枚举一上一下的端点,判断它最长能走到哪里...
阅读全文
摘要:忘记pick定理是什么了 想枚举来着 。。没枚出来有篇pick定理的证明 貌似挺好 也没太看懂 1 /* 2 ID: shangca2 3 LANG: C++ 4 TASK: fence9 5 */ 6 #include 7 #include 8 #include 9 #include10 #include11 using namespace std;12 int gcd(int x,int y)13 {14 return y==0?x:gcd(y,x%y);15 }16 int main()17 {18 freopen("fence9.in","r...
阅读全文
摘要:这题水的真不易。。300多行 累死了 对着数据查错啊枚举每个边上的点到源点 是否中间隔着别的边 每条边划分500份就够了 注意一下与源点在一条直线上的边不算几何 啊,,好繁琐 参考各种模版。。 1 /* 2 ID: shangca2 3 LANG: C++ 4 TASK: fence4 5 */ 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 using namespace std; 13 typedef struct pointt 14 { 15 ...
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4631比赛的时候搜到了最接近点对的求法 Nlog(N) 又估摸着依次插入求的话会TLE 想了想觉得可以先把最近的位置求出来 然后后面的直接不用求了 依次直到减完 又觉得可能会有变态的数据每次最近的都在最后面 没敢写。。后来 发现它出现在题解的方法三中。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define N 500005 8 #define LL long ...
阅读全文
摘要:http://poj.org/problem?id=2398跟2318一样 数据还少些 直接枚举的 2318还用了二分 叉积判左右 1 #include <iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<iostream> 5 #include<stdlib.h> 6 #include<algorithm> 7 #include<cmath> 8 using namespace std; 9 struct pointt10 {11 doub
阅读全文
摘要:转自 http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html其实也谈不上推荐,只是自己做过的题目而已,甚至有的题目尚未AC,让在挣扎中。之所以推荐计算几何题,是因为,本人感觉ACM各种算法中计算几何算是比较实际的算法,在很多领域有着重要的用途 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠。 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。 4.注意精度控制。 5.能用整数的地方尽量用整数,要想到扩
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4380求三角形内的点的个数为奇数的三角形数 官方解题报告提供的是O(n2+m)的算法 先算两点与原地围成的三角形 最后总的有向三角形面积等于三者之和实在不知道有向面积怎么转换成无向的 交了十几次依旧WA 在网上看到另一种做法 感觉很好利用叉乘算出每个线段下面的点 三角形是由三条线段所围成 所以用一条减去两条(钝角)或者两条减一条(锐角)就能得到三角形区域 所以它包围的点数也就出来 了View Code 1 #include <iostream> 2 #include<cstdio> 3
阅读全文
摘要:http://poj.org/problem?id=2187求出形成凸包的各边 找出最大的View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<string.h> 4 #include<algorithm> 5 using namespace std; 6 struct node 7 { 8 int x,y; 9 }q[50011];10 int dis(int x1,int y1,int x2,int y2)11 {12 return (x1-x2)*(x1-x2)+(y1-
阅读全文
摘要:叉积求面积hdu2036(模版题):http://acm.hdu.edu.cn/showproblem.php?pid=2036View Code 1 #include <iostream> 2 #include<cstdio> 3 #include<string.h> 4 #include<math.h> 5 using namespace std; 6 struct node 7 { 8 int x,y; 9 }q[101];10 double cross(node a,node b)11 {12 return a.x*b.y-a.y*b.x
阅读全文
摘要:* 需要包含的头文件 */#include <cmath >/* 常用的常量定义 */const double INF = 1E200const double EP = 1E-10const int MAXV = 300const double PI = 3.14159265/* 基本几何结构 */struct POINT{ double x; double y; POINT(double a=0, double b=0) { x=a; y=b;} //constructor};struct LINESEG{ POINT s; POINT e; LINESEG(POIN...
阅读全文

浙公网安备 33010602011771号