HDU 2150 Pipe(math叉乘判斷)

2021-06-28 23:34:18 字數 1061 閱讀 6691

中文題,題意不用多少。
這題也許兩個線段當成直線算交點,然後判斷交點橫座標在不在定義域內,感覺也可以,不過這種方法太低端,看了discuss裡叉乘判斷,於是我去學習了下線代里的向量積(ps.我是野生大一狗)。

兩個向量的向量積,是乙個垂直於兩個向量的向量,如果abxac,得到的結果是垂直於abc這個平面的乙個向量,這是用右手系判斷的,如果是abxac,就是右手拇指朝上,手掌從ab邊旋轉小於180度的角度轉到ac,這個結果就是拇指的方向。

如果ab和cd相交,可以畫個圖看看,abxac和adxab的拇指方向是相同的,acxad和bdxbc的拇指方向也是相同的。

abxac=(b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x);

(abxac)*(adxab)>=0,就是說明這兩個向量積的方向相同,也就是姆指方向相同,也就是兩個線段相交的判斷條件。

其他的過程就是依次列舉。

#include#include#include#includeusing namespace std;

#define max 100+5

typedef long long ll;

const double pi=3.141592653589793;

const int inf=1e9;

const double inf=1e20;

const double eps=1e-6;

const int mod=1000000007;

struct pointp[35][105];

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

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

int main()

if(n==1)

int flag=0;

for(int i=0;i}}}

} if(flag) printf("yes\n");

else printf("no\n");

} return 0;

}

HDU2150 Pipe 折線相交 叉乘

好吧,之前一直不想用叉乘判斷線段相交問題,畢竟我覺得用直線方程是在是太方便太直接了 直到我遇到了這個題目,真的是給它跪了,wa到死。不得跪舔叉乘。include include include include include include include include include inclu...

hdu 3791 二叉搜尋樹 叉排

二叉查詢樹 binary search tree 或者是一棵空樹,或者是具有下列性質的 二叉樹 若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值 若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值 它的左 右子樹也分別為 二叉排序樹。題意就是判斷兩個序列是否代表同一棵樹 二叉搜...

hdu3791二叉搜尋樹

hdu3791二叉搜尋樹 又是二叉搜尋樹的前序遍歷。1.建樹會順序影響整棵樹的形狀 2.記得釋放資源 3.可以用雙重指標和引用優化程式。某些printf 是之前設定的斷點,可以無視之 includeusing namespace std struct bst root bst insert bst ...