![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM 计算几何
文章平均质量分 70
New_C_YUER
这个作者很懒,什么都没留下…
展开
-
poj 3737
<br />原题: UmBasketellaTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 3988 Accepted: 1507<br />Description<br />In recent days, people always design new things with multifunction. For instance, you can not only use cell phone to call your friends原创 2010-11-15 00:31:00 · 667 阅读 · 0 评论 -
2010 ACM-ICPC Multi-University Training Contest(11)——Host by BUPT
<br /> 这次的多校联合暂时做出了3题。。。。<br />http://acm.hdu.edu.cn/listproblem.php?vol=26<br /> <br />3536----3543<br /> <br /> 1.PAINTING<br /> 开原创 2011-05-02 17:25:00 · 1305 阅读 · 0 评论 -
hdu 1700 poj 2954
<br /> 题目大意:给出一个以格子点为顶点的三角形,要求求出在此三角形里的顶点个数。<br />此题有直接的数学公式套用,即PICK公式,以下是该公式的相关介绍:<br />http://translate.google.com/translate?u=http%3A%2原创 2011-04-10 00:48:00 · 1316 阅读 · 1 评论 -
hdu 2105
题目意思没啥好说原创 2011-07-30 23:11:08 · 534 阅读 · 0 评论 -
hdu 3511
<br /> 题目意思实际上就是找嵌套数最大的圆并输出其嵌套数。<br /> 一开始见时间有5000ms,就果断暴力,然后果断超时— — 之后用二分,终于不tle啦,但wa。。。TAT。上网找题解,发现有两种方法,一个是用随机数,另一个是计算几何中的扫描法,其中用了set,没原创 2011-03-29 23:11:00 · 860 阅读 · 0 评论 -
poj 2412
题目意思没啥好说。。。求平面上距离最远的两个点。 用凸包可解。先构造凸包,然后枚举凸包上的所有点对即可。 #include#include#include#include#include#include#原创 2011-07-30 23:17:23 · 374 阅读 · 0 评论 -
poj 2007
题目意思,给了你一个凸包,给定起点(0,0),要你按从小到大的极角序输出其他点,极角是以原点为起点的。 凸包可解。直接把Scan算法那个排序部分拿过来就好了。 #include#include#incl原创 2011-08-03 20:54:21 · 600 阅读 · 0 评论 -
poj 2318 poj 2398
题目意思,是给了你一个盒子,其中有板将其分成多个格子,然后有多个点,肯定是在这些格子中(在边上也算进格子)的,问各个格子拥有的点的个数。 叉积+二分搜索。由于点必定在格子中,因此,用目标点和格子边上的四个点进行叉积运算,点在格子的“左边”的右边且在格子的“右边”的原创 2011-08-05 15:23:40 · 1004 阅读 · 0 评论 -
poj 2420
题目意思就是求一个多边形的费马点。 随机贪心算法即可。对于4条边以上的多边形没有公式求解。(三角形则比较简单)。给出这样一个贪心算法:先随机取个点(我选了凸包上的第一个点),再取一个步长(我取100),朝4个方向走,如果新位置到各点距离比原来小,就走过去;直原创 2011-09-15 12:16:06 · 890 阅读 · 0 评论 -
poj 3990 hdu 3694
题目意思是求四边形的费马点。 这里要严谨一点了,随便一个随机贪心算法会wa。 若四边形为凸边形,则费马点为对角线之交点。 若四边形为凹边形,则费马点为四边形中的一个顶点。原创 2011-09-15 12:24:23 · 1080 阅读 · 0 评论 -
poj 1673
<br /> 之前看了题目分类,才事先知道是要求三角形的垂心,不然真的很难看出是垂心。这里有个比较好的方法来证出该点就是垂心:<br /> <br />http://hi.baidu.com/pojoflcc/blog/item/9452a4dade5c996cd1164e22.html<br /> <br />我用的方法是有向面积。<br /> <br />以下是代码:<br /> #include<cstdio><br />#include<iostream><br />using names原创 2011-04-29 22:58:00 · 610 阅读 · 0 评论 -
poj 3348
<br /> 求凸包的面积除以50。。。。。大水的模版题,构造凸包的Graham Scan算法+多边形面积公式即可得到答案。<br /> 以下是代码:<br /> <br /> #include<cstdio><br />#include<algorithm><br />#include<cmath><br />using namespace std;<br />const double eps=1e-6;<br />const int N=11000;<br />struct point<原创 2011-04-30 00:20:00 · 865 阅读 · 0 评论 -
poj 1410
这是一个很不错的模版题,题意也很明了,判断线段是否和矩形相交。而所谓“相交”,在计算几何的角度来看,就是线段有一点在矩形内或矩形上。判断的方法如下: 判断线段的两端点是否在矩形内,若是,则线段在矩形内。 判断线段是否与矩形相交,即是否和矩形的四条边中的任意一条边相交(规范相交和不规范相交都算)。 此处是用有向面积法判断点是否在多边形内。最后,看看discuss。。。那个矩形的点有点XXXX,记得x1,x2 和 y1,y2的大小要分别判断,该交换的要交换。原创 2011-04-23 22:42:00 · 748 阅读 · 0 评论 -
poj 1113
<br /> 题目解法:实际上就是把所给的点构造出一个凸包,求出凸包的周长和以所给的最近距离为半径长度的圆的周长。构造凸包用的是Gram Scan(应该没拼错吧?我英语很烂的,原谅小弟)。<br /> <br /> 以下是代码:<br /> <br />#include"cstdio"#include"cmath"#include"algorithm"usingnamespace std;constint N=1005;constdouble eps=1e-8;constdouble原创 2011-03-19 13:16:00 · 455 阅读 · 0 评论 -
poj 2365 poj 1113
<br /> 求凸包的周长和以所给半径长度的圆的周长,基本上是一个模版题。<br /> <br /> 以下是代码:<br /> #include<cstdio><br />#include<cmath><br />#include<algorithm><br />using namespace std;<br />const int M=110;<br />const double eps=1e-6;<br />const double Pi=acos(-1.0);<br />s原创 2011-05-12 00:49:00 · 925 阅读 · 0 评论 -
hdu 3007
<br /> 题目意思是对于给出的所有点,找一个最小圆使得可以覆盖所有的点。<br /> 一个很直观的做法是对所有点构造凸包,找出凸包的最长直径即可。不过发现网上有很多说法说是要考虑到等边三角形的情况,这里给出一个写得很好的blog,建议大家看看,我的没有考虑那么周全。<br /> http://blog.csdn.net/akof1314/archive/2009/08/22/4471566.aspx<br /> <br /> 这里是我的代码,不介意的可原创 2011-05-20 10:08:00 · 1131 阅读 · 0 评论 -
poj 1556
题目意思是对于一个给定的房间和固定的起点和终点,其里面有好几堵墙,求起点到终点的最短路径。 黑书练习题。具体解法是把题中所给的所有点看成是图中的一一对应的点,点与点之间可以连线当且仅当该线段与墙不相交。最后用dijk求起点到终点的最短路即可。 代码很长,一般的计算几何题都是如此,细心是关键: #include#include#include#includeusing namespace std;const int M=200;const int N=10000;co原创 2011-05-24 23:51:00 · 811 阅读 · 0 评论 -
hdu 2948
<br /> 题目意思实际上就是给出一个点和若干个矩形、圆形和三角形,问这个点是否在这些图形当中。这是一个很基本的计算几何问题,由于太菜了,没做出,主要是判断点是否在三角形里时算法不好。正确的做法是用叉积,依次顺时针或逆时针取三角形的两个点和给出的点,判断这三个点是左转(叉积>=0)还是右转(叉积<=0),若全部左转或全部右转则其就在三角形内。<br /> 以下是代码:<br /> <br />#include<stdio.h><br />#include<math.h><br />stru原创 2011-04-11 18:41:00 · 715 阅读 · 0 评论 -
poj 1269
<br /> 计算几何的又一个基础题,直接用黑书的模版即可。问题是要求出对于给定的两条的直线中的两点,得出两条直线的关系:平行、共线和相交,相交时求出交点。<br /> <br /> 以下是代码:<br /> #include<cstdio><br />#include<iostream><br />using namespace std;<br />struct point<br />{<br /> double x,y;<br />}p1,p2,p3,p4,p0;<br />原创 2011-04-15 13:27:00 · 494 阅读 · 0 评论 -
poj 2653
<br /> 判断两线段是否相交,套模版即可。记得判相交时是判断当前线段是否与排在它后面的线段相交。<br /> <br /> 以下是代码:<br /> #include<cstdio><br />#include<cstring><br />#include<iostream><br />using namespace std;<br />const int M=100010;<br />const double eps=1e-9;<br />double max(double a,do原创 2011-04-21 13:32:00 · 586 阅读 · 0 评论 -
poj 1654
<br /> 题目意思就是求多边形的面积。用叉乘,用原点(0,0)和多变形的每两个相邻点(按一定的方向,可以是顺时针,也可以是逆时针)构成一个三角形,求有向面积,所有的有向面积之和的绝对值除以2即为所求。<br /> 以下是代码:<br /> <br /> <br /> #include<cstdio><br />#include<iostream><br />using namespace std;<br />const int N=1000010;<br />struct point<原创 2011-04-22 09:35:00 · 1012 阅读 · 0 评论 -
poj 1329
<br /> 求三角形的外接圆,解析几何题,推出公式即可AC。<br />以下是代码;<br /> #include<stdio.h><br />#include<math.h>double a1,a2,b1,b2,c1,c2;<br />double x,y,r;int main()<br />{<br /> while(scanf("%lf%lf%lf%lf%lf%lf",&a1,&a2,&b1,&b2,&c1,&c2)==6)<br /> {<br /> x=((b2-a2)*((c1*c1+原创 2011-04-22 10:51:00 · 530 阅读 · 0 评论 -
hdu 2440
题目意思就是求费马点。 凸包+随机贪心法可解。先构造一个凸包,因为凸包上的点才能保证监视范围够大,最后求凸包的费马点即可。 以下是代码:#include#include#include#include原创 2011-09-15 12:20:02 · 529 阅读 · 0 评论