![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算几何
文章平均质量分 79
yang_bro
For my dreams I hold my life ,for wishes I behold my night. ---Nightwish
展开
-
hdu 1665 That Nice Euler Circuit(欧拉定理)
输入n个点,然后从第一个点开始,依次链接点i->点i+1,最后回到第一点(输入中的点n),求得到的图形将平面分成了多少部分。根据欧拉定理 v_num + f_num - e_num = 2可知,求出点数跟边数便能求出平面数。#include#include#include#include#include#include#include#include#include#in原创 2013-08-22 16:23:22 · 956 阅读 · 0 评论 -
SGU 532 Building Foundation(枚举)
给出n条与x轴或y轴平行的线段,然后求这些线段能组成多少个矩形。上来就n^4先枚举了一发,果断TLE了。。。然后反思:由于n条线段与x轴或y轴平行,所以组成的矩形一定是两条于x轴平行,两条与y轴平行的。这样的话,我们先n^2枚举所有两条y值不相等的与x轴平行的线段,然后就会发现能与这两条线段都有交点的平行于y轴的线段的x跟y都会有一个范围,然后在O(n)枚举所有与y轴平行的线段,求和就行了原创 2013-10-21 12:18:26 · 1143 阅读 · 0 评论 -
hdu 4491 Windmill Animation(几何+模拟)
给定平面上的n(n考虑到n很小,可以模拟来搞。每次得到一个原点及斜率,然后构造出在直线上原点(O)的上方(rp)和下方(rn)两个点。然后依次每个不在该直线上的点,如果该点在直线上方,那么要达到该点逆时针旋转的角度为向量 rp->O 和向量 p->O的夹角。反之则是向量rn->O和向量p->O的夹角。#include#include#include#include#includ原创 2013-10-18 16:44:27 · 1075 阅读 · 0 评论 -
SPOJ AMR12C Entmoot(二分+圆的面积交)
题意是有n个人,每个人有各自坐标以及速度,求一个点X,使得所有点走到X点,耗时最大的那个人的耗时最小。输出这个时间。抽象成圆的面积交: 二分枚举时间将求极值问题转换为判定问题。如何判断是否存在一个点X,使得所有点都能在time时间内到达X? 每个人在time时间内的运动范围是以其初始座标为圆心,半径 v*time的一个圆。那么问题就很直观了,只要由time生成的这n个圆存在交,那么所有人就能在原创 2013-10-16 17:50:46 · 1466 阅读 · 1 评论 -
hdu 4273 Rescue(三维凸包重心)
裸的三维凸包重心到表面的最近距离。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(int i=a; i<b; i++)#define FD原创 2013-09-26 13:02:01 · 1121 阅读 · 0 评论 -
hdu 4445 Crazy Tank(枚举角度)
这题第一反映肯定是三分角度,然后求最大值。。但是有友方坦克的存在,如果一个角度会导致某个导弹打到友方坦克,那么返回结果直接是0。所以只能萎缩地枚举角度了。。。。e中保存地方坦克的区间,f中保存友方坦克的区间。#include#include#include#include#include#include#include#include#include#include原创 2013-09-25 22:31:39 · 984 阅读 · 0 评论 -
hdu 4404 Worms(多边形与圆的交)
求出爆炸点的坐标,就成了多边形与圆相交面积的模板题了。。。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(int i=a; i<b; i++)原创 2013-09-05 17:40:11 · 1512 阅读 · 0 评论 -
hdu 4741 Save Labman No.004(2013杭州网络赛)
http://blog.sina.com.cn/s/blog_a401a1ea0101ij9z.html 空间两直线上最近点对。这个博客上给出了很好的点法式公式了。。。其实没有那么多的tricky。。。不知到别人怎么错的。。。//#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#原创 2013-09-15 19:35:29 · 1581 阅读 · 2 评论 -
hdu 4063 Aircraft(计算几何+最短路)
不说了。。。说多了都是泪。。。从昨天下午一直wa到现在,直到刚刚才让人帮我找到所谓的“bug”,其实也算不上bug。。。这个题的思路就是:找出平面上的所有点:所有圆的交点以及所有圆的圆心。然后依次判断两点是否连通,连通的话两点距离便是其欧几里得距离。这样建完图之后直接跑s->t最短路就行了。。两点连通?也就是说这两点连成的线段,一直在圆内,任意圆都行。如何判断呢,求出该线段与所有圆的所有交原创 2013-09-12 22:20:40 · 1260 阅读 · 0 评论 -
hdu 2440 Watch out the Animal(凸包+费马点)
读懂了题的话就不难发现是要求费马点,不过输入点的顺序是不一定的,而且求的是凸包的费马点,不是所有点的费马点。。。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includ原创 2013-09-07 10:46:34 · 1279 阅读 · 0 评论 -
hdu 4631 Sad Love Story(最近点对+暴力)
这题第一次做的时候觉得太暴力了。。不敢搞。。今天看了题解,一共有三种方法可以搞:sol 1是用STL暴力的。。简单粗暴,但是考虑到自己的时间复杂度分析以及对数据的理解不够深,比赛的时候还是慎用STL的好。sol 2是用KD树,那是什么。。。无奈只能尝试一下sol 3了。。先求出所有点的最近点对,然后,对于这对点之后出现的点,累加就行了,然后不断减少上界,直到大于1为止(一个点的时候无距离)。要改一原创 2013-09-07 13:17:47 · 1176 阅读 · 0 评论 -
UVALive 3890 Most Distant Point from the Sea(凸包最大内接圆)
一个n个点的凸多边形,求多边形中离多边形边界最远的距离。实际上就是求凸包最大内接圆的半径。利用半平面交求解,每次二分枚举半径d,然后将凸包每条边所代表的半平面沿其垂直单位法向量平移d,看所有平移后的半平面的交集是否为空。#include#include#include#include#include#include#include#include#include#incl原创 2013-08-31 21:25:46 · 1105 阅读 · 0 评论 -
hdu 1007最近点对
原文链接http://blog.csdn.net/hellobabygogo3/article/details/8042650先说下题意,很简单,给n个点的坐标,求距离最近的一对点之间距离的一半。第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标,实数。 这个题目其实就是求最近点对的距离。主要思想就是分治。先把n个点按x坐标排序,然后求左边n/2个和右转载 2013-09-06 14:28:03 · 853 阅读 · 0 评论 -
poj 3608 Bridge Across Islands(两凸包最近距离)
很裸的题,还是用旋转卡壳的方法。输入点的顺序就是逆时针输入了。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define FF(i, a, b) for(int i=a;原创 2013-08-28 11:04:36 · 1039 阅读 · 0 评论 -
UVALive 4728 Squares(旋转卡壳求凸包直径)
给出平面上的n个矩形,求所有顶点对中距离的最大值。显然最大距离的顶点对在凸包上,而求凸包直径,当然用旋转卡壳了。。。#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#defi原创 2013-08-27 10:55:15 · 1412 阅读 · 0 评论 -
旋转卡壳法总结
以下所有文章均转载( http://blog.csdn.net/acmaker/article/details/3176910) 转载请注明出处!1、旋转卡壳——翻译说明文档 前一段时间看了一位国外大牛的网站,是关于旋转卡壳技术的,内容很不错,就尝试着翻译一下。 关于旋转卡壳技术,最早是在刘汝佳、黄亮的《算法艺术与信息学竞赛》上看到的,是计算几何相关的技术转载 2013-08-27 10:51:08 · 2729 阅读 · 0 评论 -
UVA 11168 Airport(凸包)
给出平面上的n个点,求一条直线,使得所有点在该直线的同一侧且所有点到该直线的距离和最小,输出该距离和。要使所有点在该直线的同一侧,明显是直接利用凸包的边更优。所以枚举凸包的没条边,然后求距离和。直线一般式为Ax + By + C = 0.点(x0, y0)到直线的距离为fabs(Ax0+By0+C)/sqrt(A*A+B*B).由于所有点在直线的同一侧,那么对于所有点,他们的(Ax0+By原创 2013-08-27 09:14:51 · 1381 阅读 · 0 评论 -
hdu 3934 Summer holiday(凸包最大内接三角形)
求n个点能组成的最大三角形,一发旋转卡壳模板题。。。 #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-08-27 11:25:54 · 1268 阅读 · 0 评论 -
ZOJ 2318 Get Out!(计算几何+spfa好题!)
你是一个圆,然后平面还有n个圆,问你能否通过移动自己,突出重围!再抽象一点,就是判断一个圆,是否在其他若干个彼此相连的圆的“大圈圈”内。。。这里不得不强烈推荐watashi大神的神思路。。。神奇地将此题转化成图论模型!个人的理解是,如果某两个圆相交或相切,那么他们组成的封闭区间可以用连接其两圆心的线段表示,这样能得到若干线段,这样就成了,若干线段中,是否能组成一个多边形,使得起始圆心在多边原创 2013-10-31 21:29:00 · 1524 阅读 · 0 评论