
计算几何
M_Lter
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
POJ - 2398 Toy Storage
题目链接 题目和POJ - 2318 TOYS相似,这题要求算出放置同样数目的玩具的隔间数,同时隔板和玩具放置的位置不是按顺序给的,只要排序加map记录个数即可。 #include<cstdio> #include<cmath> #include<map> #include<algorithm> using namespace std; con...原创 2018-08-22 09:56:43 · 134 阅读 · 0 评论 -
POJ - 1410 Intersection
题目链接 判断线段是否和矩形相交或者在矩形内或者在矩形边上,是则输出T,否则输出F。 一开始自己没看清题意,直接判断矩形四条边是否和线段相交,一直wa。看了题解才知道,还有在矩形内和矩形边上,这三种情况都单独讨论。 #include<cstdio> #include<cmath> #include<cstring> #include<algorit...原创 2018-08-25 19:32:07 · 217 阅读 · 0 评论 -
POJ - 1066 Treasure Hunt
题目链接 四堵墙围成的正方形内有n堵墙,求从正方形外进入宝藏处需要破墙次数的最小值。(每次破墙只能从中点破)。 简单想就是从正方形边界找点到宝藏处会与多少条线段(墙)相交,再加上打破边界的这堵墙,求个最小值即可,判断相交用交叉积。 #include<cstdio> #include<cstring> #include<algorithm> using n...原创 2018-08-25 10:40:32 · 136 阅读 · 0 评论 -
POJ - 1039 Pipe
题目链接 题目给出管道上半部分各个拐点处的坐标(x,y),管道宽度为1,对应下半部分各个拐点处的坐标是(x,y-1),求直线穿过水管相交处的横坐标的最大值。 直线与每个拐点上下连线的线段若有交点则表示穿过管道,如果不能穿过,在第k节管道处无法穿过,则需要计算最大坐标x,即分别计算与第k-1节管子的上、下管壁相交, 求得最大坐标。 #include<cstdio> #includ...原创 2018-08-29 17:20:18 · 295 阅读 · 0 评论 -
POJ - 3449 Geometric Shapes
题目链接 题目好理解,一张图里有多种形状的图案,分辨标有编号,问每个形状是否与其他形状相交,按字典序列出。 将题目所给的点依照形状补充完整:(根据对角关系) 正方形:已知(x0,y0),(x2,y2) 则:x3=((x0+x2)+(y2-y0))/2;y3=((y0+y2)+(x0-x2))/2; x4=((x0+x2)-(...原创 2018-08-29 16:22:55 · 252 阅读 · 0 评论 -
POJ - 2318 TOYS
题目链接 用n块板将一个一个长方形盒子(给定左上角和右下角坐标)隔成n+1个空间,给定放置m个玩具的坐标,求每个隔间内有多少个玩具。 玩具坐标A(x,y),隔板端点坐标B(U,y1),C(L,y2) 设置成统一起点C(L,y2):两条线段为:CA(x-L,y-y2),CB(U-L,y1-y2) 当交叉积 CA x CB <=0时代表玩具在隔板的左边 #include<c...原创 2018-08-21 23:18:20 · 189 阅读 · 0 评论 -
POJ - 2653 Pick-up sticks
题目链接 求放置木棍后位于最上面的几根木棍的序号,判断是否相交,利用交叉积即可。 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int N=2e5+5; int ans[N]; struct l...原创 2018-08-24 23:53:29 · 148 阅读 · 0 评论 -
POJ - 1556 The Doors
题目链接 求房间左边中点绕开障碍到右边中点的最短距离,即最短路。 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using namespace std; const int INF=1e8; const int N=100; double d[N][...原创 2018-08-24 22:32:35 · 92 阅读 · 0 评论 -
POJ - 1269 Intersecting Lines
题目链接 四个点,判断两条线段位置(共线,平行,相交) 平行:(B.x-A.x)*(D.y-C.y)=(B.y-A.y)*(D.x-D.x) 共线:交叉积(AC,AB)=0,交叉积(AD,AB)=0 相交:设交点为P 则交叉积(AP,BP)=0,交叉积(CP,DP)=0 展开为: (A.y-B.y)*P....原创 2018-08-24 19:14:24 · 131 阅读 · 0 评论 -
POJ - 2074 Line of Sight
题目链接 房子和路之间有诸多障碍物,求从这条路上能看到完整房子的最大长度。 换位思考,利用三角形相似原理根据坐标求出视线盲区的长度,除此之外,预处理掉一些不在房子和路之间的障碍物,以免错误判断。参考题解:https://blog.youkuaiyun.com/f_cpp/article/details/40952709 #include<cstdio> #include<cmath&...原创 2018-08-28 11:10:52 · 237 阅读 · 0 评论 -
POJ - 3347 Kadj Squares
题目链接 每个方形45度放置,贴边放置,尽可能减省空间,问最后从上往下看能看到哪几个方形。 定义结构体,记录方形的边长,左顶点位置和右顶点位置,因为有覆盖,所以更新左右顶点位置,再判断即可。 #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> using...原创 2018-08-27 13:32:07 · 199 阅读 · 0 评论 -
POJ - 3304 Segments
题目链接 给n条两端点的线段,问是否存在一条直线满足所有线段投影直线上有交点。 两条线段肯定有,两条线段某一个端点相连的直线满足; 大于三条线段的,判断是否有一条直线和其他线段相交即可,用交叉积。 #include<cstdio> #include<cmath> using namespace std; const int N=110; const double ...原创 2018-08-22 11:21:02 · 101 阅读 · 0 评论 -
POJ - 1696 Space Ant
题目链接 n个点,蚂蚁从y坐标最小的点开始逆时针爬行,写出经过点的序号。 每次选点都只能从剩下的点中选择最靠右的,用叉积排序求解。题解有说这是凸包变种,可用凸包求解(写的时候没写对),涉及卷包裹算法,也可以用极角排序,涉及Granham Scan算法。 #include<cstdio> #include<cmath> #include<cstring> ...原创 2018-08-25 22:21:03 · 127 阅读 · 0 评论