POJ 3304 計算幾何 直線與線段相交

2022-05-24 03:48:09 字數 1193 閱讀 8360

題意:

給出n條線段,判斷是否存在有一條直線,滿足所有的線段在直線上投影後至少有乙個公共點

等價於:給出n條線段,問你是否存在一條直線,使得每個線段與該直線至少有乙個交點。

題解:嗯,猜測直線一定過至少兩個端點。

若不過某線段端點,則可以通過平應找到過乙個端點的位置

若過乙個端點,則可以旋轉使其通過兩個端點

暴力列舉端點,判線段直線相交即可~

細節好多,被坑了。。。

view code

1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7

8#define n 1000910

using

namespace

std;

1112

double

sx[n],sy[n],tx[n],ty[n];

13int

n,cas;

1415 inline void

read()

1621

22 inline int cross(double ax,double ay,double bx,double

by)23

2930 inline int getdis(double ax,double ay,double bx,double

by)31

3738 inline bool check(double ax,double ay,double bx,double

by)39

46return

true;47

}4849 inline void

go()

5052

for(int i=1;i<=n;i++)

53for(int j=i+1;j<=n;j++)

5456

if(check(sx[i],sy[i],tx[j],ty[j]))

57if(check(sx[j],sy[j],tx[i],ty[i]))

58if(check(tx[j],ty[j],tx[i],ty[i])) 59}

60 puts("

no!"

);61}62

63int

main()

64

poj3304 計算幾何 線段與直線相交

題意 給定n條線段,確定是否存在一條直線,使得這n條線段在這條直線上的射影具有公共點 可將問題轉化為是否存在一條直線經過所有的線段,證明見依然的部落格 include include include using namespace std const double eps 1e 8 const in...

POJ 3304 直線與線段相交)

題目 poj3304 給定n條線段,找出一條直線,能與所有的線段有乙個交點 可以在端點處相交 思路 如果存在這麼一條直線,必定過平面中的兩個點,所以任意窮舉兩個點所在的直線與所有線段判斷是否相交。sample input 3 21.0 2.0 3.0 4.0 4.0 5.0 6.0 7.0 30.0...

poj 3304 判斷直線與線段相交

傳送門 題意 給你一些線段,然後問你是否存在一條直線,把這些線段投影到直線上,所投影與原線段至少有1個公共點。思路 由題意可得原線段與直線符合條件的直線至少有1個公共點,所以就轉化成是否有直線與所有線段相交的問題了。列舉任意兩個不同端點作為直線上兩點確定一直線判斷是否與所有直線相交即可。吐槽 距離小...