
计算几何
ナナ色のブランク
这个作者很懒,什么都没留下…
展开
-
POJ 1696 Space Ant(凸包)
题目链接题目大意:一只蚂蚁一直走,只能直走和左拐,为了走尽可能多的点,应该按什么路线走。分析:既然不能右拐,也就是按逆时针方向走,很容易想到螺旋走是最优的,而为了走尽可能多的点也就每次都走最外侧的点,起点从纵坐标最低的地方开始,也就是不断地去求凸包,然后凸包上的点,下次跳过,最后输出这个路径。#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include原创 2021-02-04 21:24:51 · 147 阅读 · 0 评论 -
POJ 3304 Segments(枚举+判断直线与线段相交,问题转化)
题目链接题目大意:给定n条线段,问是否存在一条直线使得n条线段投影到直线上之后至少有一个交点。分析:假设存在这么一条直线,那么上面必定存在一个点使得这个点在n条线段上都有投影,那么连接这n个点能够组成一条直线,然后问题就转化成了问:是否存在一条直线使得它与所有线段都有交点。先考虑若有这么一条直线过所有线段,则我们可以通过不断旋转这条直线,使得这条直线最终被某两个端点束缚住,两点确定一条直线,则我们可以枚举两个端点,然后用这两个端点组成的直线去与n条线段相交,若都相交则yes,否则no。注意点:精度问原创 2021-01-27 21:42:44 · 148 阅读 · 0 评论 -
POJ 1228 Grandpa‘s Estate(稳定凸包)
题目链接题目大意:给你n个点,让你确定这n个点围成的凸包是否可以唯一确定一个凸包。首先凸包分为稳定凸包和纯净凸包,是看这篇博客才知道的。点这里这个题就是要让你判断这些点求出来的凸包是否是稳定凸包。稳定凸包上每条边都至少有三个点,为什么呢?因为如果少于三个点是两个点,那么在这条边外面再加入一个点就可以形成一个更大的凸包,原来的凸包是不稳定的。(注意题目中说了输入的点都是凸包上的点)。所以如果有一条边没有至少三点共线,则可通过加点而确定更大凸包,故无法由输入点唯一确定边界。#include<ios原创 2021-01-26 17:41:51 · 149 阅读 · 0 评论 -
POJ 2007Scrambled Polygon (极角排序)
题目链接题目大意:给你凸包上的点集,从原点开始逆时针输出点。一开始用atan2排序,但莫名其妙wa掉了,可能精度不够把。。然后改成叉积才a掉。#include<iostream>#include<algorithm>#include<cstring>#include<cmath>#include<queue>#include<map>#include<vector>using namespace std;原创 2021-01-26 11:24:03 · 137 阅读 · 0 评论 -
hdu 1558 Segment set(计算几何+并查集)
题目链接思路:题意要求是要判断询问线段所处集合里有多少个线段,所以很自然想到并查集判断集合大小,在合并的时候顺便计算,作为自己的第一道简单题记录一下吧。#include<cstdio>#include<cmath>#include<cstring>#define lk (k<<1)#define rk (k<<|1)using namespace std;typedef long long ll;typedef unsigned原创 2020-09-12 15:49:39 · 186 阅读 · 0 评论