Segments 是否存在直線與所有線段相交

2021-06-08 15:37:06 字數 792 閱讀 4905

題目:

注:這兩題基本上是一樣的,題意都是,所有線段在某條直線的投影有公共點,問:這條直線是否存在。

所有線段在某條直線的投影有公共點   等價於   所有線段與該條直線的垂線相交。

另外該直線存在的話一定會存在通過兩條線段端點的直線。

列舉兩兩線段的組成的四條直線,看看該條直線是否與所有線段都相交。

注2:在判斷某條直線是否與所有線段相交時,使用叉積,但poj的那一題要注意精度,

double cross( point a, point b,point c)  //ac

double cross( point a, point b,point c) //wa

源**:

#include #include #define exp 1e-10

#define n 405

typedef struct

point;

point p[n],p1[n];

int n,cas,flag;

double cross(point a,point b,point c)

double dist(point a,point b)

int judge(point a,point b)

int solve()

{ int flag=0,cnt=0;

for(int i=0;i

POJ3304 Segments 線段直線相交

題意 給出n條線段兩個端點的座標,問所有線段投影到一條直線上,如果這些所有投影至少相交於一點就輸出yes!否則輸出no!思路 計算幾何。這道題要思考到兩點 1 把問題轉化為是否存在一條直線與每條線段都有交點。證明 若存在一條直線l和所有線段相交,作一條直線m和l垂直,則m就是題中要求的直線,所有線段...

poj 3304 Segments 直線 線段求交

在二維空間上,給定一組線段,能否存在這樣的一條直線,使所有線段在這條直線的投影會在乙個點上。如果沿著這個投影點做直線的垂線,那麼這條垂線必會與所有的線段相交。那麼本題就轉換為能否找到一條直線與所有的線段相交。想找這樣的直線,就要去離散化的列舉,本題怎樣有效的列舉是關鍵。首先假設有一條直線與所有的線段...

SQL判斷是否存在

判斷資料庫是否存在 if exists select from master.sysdatabases where name n 庫名 print exists else print not exists 判斷要建立的表名是否存在 if exists select from dbo.sysobjec...