基础计算几何
DeathYmz
划水摸鱼要不得!!!
不上紫名不改简介=_=(改了改了 打leetcode周赛去了 codeforces太晚了养身要紧)
展开
-
TOYS POJ - 2318
TOYS POJ - 2318 题意:给出n,m,x1,y1,x2,y2;n代表又n个隔板,m代表将放入m个玩具,x1,y1代表左上的点,x2,y2代表右上的点。 思路:初学向量这方面,根据题解的意思,自己写的。主 要利用的原理是向量叉乘:向量P与向量Q。 P*Q>0 P在向量Q的顺时针方向(右) P*Q<0 P在向量Q的逆时针方向 (左) P*Q=0 P与Q共线,可能同向...原创 2018-08-19 11:09:53 · 329 阅读 · 0 评论 -
Pick-up sticks POJ - 2653
Pick-up sticks POJ - 2653 分类:计算几何+线段相交** 题目: Stan has n sticks of various length. He throws them one at a time on the floor in a random way. After finishing throwing, Stan tries to find the top sti...原创 2018-08-21 12:18:50 · 239 阅读 · 0 评论 -
Treasure Hunt POJ - 1066
Treasure Hunt POJ - 1066 分类:计算几何+线段相交题目: Archeologists from the Antiquities and Curios Museum (ACM) have flown to Egypt to examine the great pyramid of Key-Ops. Using state-of-the-art technology ...原创 2018-08-21 12:26:29 · 394 阅读 · 0 评论 -
Intersection POJ - 1410
Intersection POJ - 1410 分类:计算几何+线段相交 题目: You are to write a program that has to decide whether a given line segment intersects a given rectangle. An example: line: start point: (4,9) end poi...原创 2018-08-21 12:39:27 · 319 阅读 · 0 评论 -
Space Ant POJ - 1696(计算几何+极角排序)
Space Ant POJ - 1696 分类:极角排序+计算几何 题意:给出坐标点,经历所有点,(不能走重复的路,只能向左选择走)。 思路:刚看了Graham_Scan算法,照着模板用在这上面写了一遍,嗯错了。这个是求凸包的顶点序列,用在这题是不怎么合适。后看了别人题解,使用极角排序。 关于求极角利用的是叉积的性质。 关于第一个点的选区是最下方的点,直接把这个算作开始的点。 排序,根...原创 2018-08-21 15:39:30 · 301 阅读 · 0 评论 -
Graham_Scan 算法(求凸包顶点序列)
Graham_Scan 算法 说明:Graham- Scan是一种灵活的凸包算法,其总的时间复杂度仅为0( nlog n)。Graham扫描法的原理是从点集中先找出一个最左下方的点,可以证明,这点肯定在凸包上,然后以这点为极点,将所有点根据与这点的极角排序,并且同时使用一个栈结构维护凸包上的点。按照极角序依次将点与栈顶的两个点作拐向判断:若右拐,则将当前点加人栈中;否则,将栈顶的点弹出。当遍...原创 2018-08-21 15:53:07 · 1009 阅读 · 0 评论 -
Cows poj 3348 (凸包+多边形面积)
Cows poj 3348 分类:凸包+多边形面积 题意:给出点的位置,求最大面积。答案除以50(emmm我求出最大面积然后和答案一直不一样,后来发现。。。忘记除以50了) 思路:运用了Graham_Scan 算法和求多边形面积公式。 AC代码://例题;Graham算法#include<iostream>#include<cstdio>#include...原创 2018-08-21 22:37:19 · 373 阅读 · 0 评论 -
A Round Peg in a Ground Hole POJ - 1584
#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;cmath&gt;#include&lt;cstring&gt;using namespace std;const int N=200;const double eps=1原创 2018-08-25 09:40:59 · 226 阅读 · 0 评论 -
关于线段的一些模板(判断线段相交+判断直线和线段相交+点到线段距离+点在线段上)
来源kuangbin模板关于一些精度const double eps=1e-8; const double PI=acos(-1.0);int sgn(double x)//{ if(fabs(x)&lt;eps) return 0; if(x&lt;0) return -1; else return 1;}点的结构struct point{ ...原创 2018-08-25 10:15:04 · 649 阅读 · 0 评论 -
The Doors POJ - 1556
The Doors POJ - 1556 分类:计算几何+判断线段交叉+最短路 题外话:痛苦的领悟,找bug半天,发现是自己定义两个名称一样的变量,导致后面的错了,maye,找了一个小时。多次事实告诉我,不要定义两个重名的 思路:保存点的信息,墙信息,给两两个点之间符合条件(不与线段(墙)交叉)建立边,最短路直接Floyd找答案。//没两点建立边,跑最短路。#include<i...原创 2018-08-21 00:32:23 · 367 阅读 · 0 评论 -
Line of Sight POJ - 2074(思维+数学)
Line of Sight POJ - 2074 分类:思维+数学题 题意:给出房子的位置和参考线的位置,接下来给一系列障碍物的位置,问在参考系上能看到完整房屋的最长连续长度为多少。 思路:反向思维, 1、每输入一个障碍物的位置,首先判断是不是合法障碍物(合法的是在,房子和参考系中间。在房子之上或平行,或者参考系之下平行,都不会影响视线) 2、计算他在x轴的视觉盲区,存下来。注意:s,e...原创 2018-08-23 17:03:31 · 416 阅读 · 1 评论 -
求两直线交点+判断两线段相交+求线段交点
求两直线(线段)交点void getPoint(point p1,point p2,point p3 point p4){ double a0,b0,c0,a1,b1,c1; a0=p1.y-p2.y,b0=p2.x-p1.x,c0=p1.x*p2.y-p2.x*p1.y; a1=p3.y-p4.y,b1=p4.x-p3.x,c1=p3.x*p4.y-p4.x*p3....原创 2018-08-20 19:25:32 · 2327 阅读 · 0 评论 -
计算几何中向量的表示(点,向量,点积,叉积)
点的表示struct point{ int x,y; point(){} point(int _x,int _y){x=_x;y=_y;}};向量的表示struct v{ point start; point end; v(){} v(point _start,point _end){ start=_star...原创 2018-08-19 11:16:44 · 839 阅读 · 0 评论 -
POJ 2398 Toy Storage
POJ 2398 Toy Storage 思路:和TOYS POJ - 2318 题的思路一样,题意也是差不多,只不过输出为,玩具数量: 分区数,并按照玩具数量的升序输出。代码和之前的差不多,也只是修改了一下输出。#include<iostream>#include<cstdio>#include<cstring>#include<strin...原创 2018-08-19 12:37:27 · 267 阅读 · 0 评论 -
An Easy Problem?! POJ - 2826 (计算几何+线段相交+精度)
An Easy Problem?! POJ - 2826 分类:计算几何+精度判断+线段相交+交点 题外话:写了半天才过了,虽然思路想起来很简单,但是超多的精度判断,还有好多细节,还有我又一次在输出:%lf和%f上面WA几次。后来参考别人的博客,有几个博客说AC代码,但是提交时WA,可能是后来题目的测试数据又变了一些把。 题目:给你两个线段,问可以存储的水量最多为多少。 思路: 判断线...原创 2018-08-22 14:11:25 · 336 阅读 · 0 评论 -
Kadj Squares POJ - 3347
Kadj Squares POJ - 3347 题意:给出正方形的边长序列,问从上面看,能看到哪些正方形。 思路:没有思路,看了题解,emmm。参考博客#include<iostream>#include<cstdio>#include<cmath>#include <cstring>#include <algorithm&g...原创 2018-08-22 16:06:40 · 407 阅读 · 0 评论 -
Geometric Shapes POJ - 3449(计算几何+线段相交+细心)
Geometric Shapes POJ - 3449 分类:细心+线段相交 题外话:一个tot写成了0,找了一上午bug,我粗心的想打死自己,哭了都要,题真的不难!但是就是代码有点长!一定要细心,重复的不要复制粘贴之后就不改,简直要命。 题意:给你一堆图形的坐标(直线,三角形,正方形,矩形,多边形),问他们之间的相交情况。 思路: 1、处理存储的问题,将不同形状的点按顺序存起来,三角...原创 2018-08-23 14:16:57 · 474 阅读 · 0 评论 -
Pipe POJ - 1039(线段相交+计算几何+暴力)
Pipe POJ - 1039 分类:线段相交+计算几何+暴力 题意:给你管道上方的折点(下方为上方y-1),问光线最远能达到的横轴位置. 思路:判断线段相交方式,枚举上下端点,判断与管道的折点处垂线的关系,相交说明还在管道内。可行。#include<iostream>#include<cstdio>#include<algorithm>#inc...原创 2018-08-23 14:47:36 · 547 阅读 · 0 评论 -
Segments POJ - 3304
Segments POJ - 3304 题意:给出n个线段,问是否有一条直线,可以使所有线段投影在这上面并交一点。 思路:并不是很会看了题解这个问题可以转化为是否存在一条直线和每个线段都有交点。 接下来,枚举每两个线段,两个线段可能组成的四条直线,注意重点。在利用叉积的性质,判断其他所有线段是否都和这条直线有交点 判断线段与直线l是否相交的方法: 1:利用叉积的性质,判断线段的两个端...原创 2018-08-20 19:11:47 · 260 阅读 · 0 评论 -
Intersecting Lines POJ - 1269
The Doors POJ - 1556 题意:给出两条直线上的两点求两直线的交点。 思路: 一般方程法: 直线的一般方程为F(x) = ax + by + c = 0。既然我们已经知道直线的两个点,假设为(x0,y0), (x1, y1),那么可以得到a = y0 – y1, b = x1 – x0, c = x0y1 – x1y0。 因此我们可以将两条直线分别表示为 F0(x...原创 2018-08-20 19:15:59 · 196 阅读 · 0 评论 -
点的判断与距离:判断点在线段上+在凸变形内+在任意多边形内,求点到点+线段+直线的距离
点线基本结构const double eps=1e-8; const double PI=acos(-1.0);int sgn(double x){ if(fabs(x)<eps) return 0; if(x<0) return -1; else return 1;}struct point{ double x,y; point(...原创 2018-08-25 11:42:10 · 986 阅读 · 0 评论