计算几何
acInfinity
CS
展开
-
POJ 2318
POJ 2318计算几何基础,叉积的运用,及二分求解。 题目中保证了所有玩具都是在盒子内,并且不会位于边界上。那么利用叉积可以判断出玩具相对于某个边界的方向,逆时针则在该边界左边,顺时针则在右边。然后二分边界,不断做叉积,找出该点的具体在哪两条边界之间即可,找出具体位置后,该区域的玩具数加一。时间复杂度O(n*lg(m))。#include<cmath>#include<ctime>#incl原创 2017-02-22 22:06:12 · 200 阅读 · 0 评论 -
POJ 3304
POJ 3304计算几何基础,叉积应用 大意是给出n条线段,问是否存在一条直线使得所有线段投影到直线上后存在至少一个公共点。其实就是判断是否存在一条直线与所有线段相交。 画图稍加分析可以发现,如果存在一条直线与所有线段相交,我们可以转动这条直线与至少两个线段端点重合,也就是说,我们可以通过枚举两个端点来确定一条直线,再判断它是否与所有线段相交。 枚举端点O(n^2),判断与线段相交O(n),总原创 2017-02-23 14:33:36 · 391 阅读 · 0 评论 -
POJ 1269
POJ 1269计算几何基础,叉积应用,直线判相交及交点求解。 取两条直线的方向向量做叉积,结果为0则平行。平行时,求一直线与另一直线的一端点的叉积,结果为0则不是同一条线。不平行时,x1=L[0].s.x, y1=L[0].s.y;x2=L[1].s.x, y2=L[1].s.y;x3=L[1].t.x, y3=L[1].t.y;a1=L[0].s.x-L[0].t.x, b1=L[0].原创 2017-02-23 19:09:29 · 253 阅读 · 0 评论 -
POJ 1556
POJ 1556计算几何+最短路 题目大意是有N堵竖直的墙,每堵墙上有三扇门,分别给出每扇门上端点和下端点的坐标。求点(0,5)到(10,5)的最短距离。 枚举两个点,判断这条线段是否与墙相交,相交则这两个点无法直达,否则可以直达,求出这对点之间的距离。最后用Dijkstra求点(0,5)到(10,5)的最短距离。时间复杂度O(n^3)。#include<cmath>#include<ctim原创 2017-02-24 19:52:51 · 349 阅读 · 0 评论 -
POJ 2653
POJ 2653计算几何基础,线段相交判断。 题目大意是按顺序给出N条线段,求在最上面的线段。 那么按输入顺序逆序进行枚举线段,并枚举输入在它之后的线段是否与它相交,若无输入顺序在它之后的线段与其相交则无线段在它之上。 两线段的相交即每一线段的两个端点都位于另一线段的异侧,用叉积的乘积即可判定。 #include<vector>#include<cmath>#include<ctime>原创 2017-02-25 14:31:17 · 295 阅读 · 0 评论