哈理工OJ 1559 線段相交(計算幾何)

2021-07-12 05:20:52 字數 1298 閱讀 7152

線段相交

time limit: 1000 ms memory limit: 10240 k

total submit: 211(79 users) total accepted: 98(72 users) rating: special judge: no

description

給定線段p1p2(p1和p2是線段的兩端點,且不重合)、p3p4(p3和p4是線段的兩端點,且不重合),判斷p1p2和p3p4是否相交。p1p2和p3p4相交,即指存在乙個點p,它既落在p1p2上又落在p3p4上(含線段的端點)。

input

輸入資料有多組,第一行為測試資料的組數n,下面包括2n行,每組測試資料含2行,第一行為p1p2的座標值,第二行為p3p4的座標值,比如下面的資料

表示p1、p2、p3、p4的座標分別為:p1(0,0),p2(1,1),p3(2,2),p4(3,3)

output

判斷每組資料中的線段p1p2和p3p4是否相交,如果相交輸出yes,否則輸出no。每組資料輸出佔一行。

sample input

2 0 0 1 1

2 2 3 3

0 0 2 0

0 0 1 3

sample output

no yes

hint

兩線段相交分為「規範相交」和「非規範相交」。 「規範相交」指的是兩條線段恰有唯一乙個不是端點的公共點;而如果一條線段的乙個端點在另一條線段上,或者兩條線段部分重合,則視為「非規範相交」,本題是「非規範相交」。

下面是ac**:

#include

#include

#include

using

namespace

std;

struct point

a,b,c,d;

bool judge(point a,point b,point c,point d)

else

if(fa==0&&fb!=0)

else

if(fa!=0&&fb==0)

return

true;

else

}bool judgeline(point a,point b,point c,point d)

}return

false;

}int main()

bool re=judgeline(a,b,c,d);

if(re==true)

else

}return

0;}

哈理工oj 1073 病毒

description 某種病毒襲擊了某地區,該地區有n 1 n 50000 人,分別編號為0,1,n 1,現在0號已被確診,所有0的直接朋友和間接朋友都要被隔離。例如 0與1是直接朋友,1與2是直接朋友,則0 2就是間接朋友,那麼0 1 2都須被隔離。現在,已查明有m 1 m 10000 個直接朋...

哈理工OJ 2179 深搜

組合 time limit 1000 ms memory limit 32768 k total submit 7 5 users total accepted 6 5 users rating special judge no description 給出乙個正整數n,從集合 中找出所有大小為k的...

哈理工OJ 1191 相親(容斥原理 錯排公式)

相親 time limit 1000 ms memory limit 65536 k total submit 293 85 users total accepted 105 75 users rating special judge no description 為了追求鄰家小妹,hrbust 隆...