ACM練級日誌 POJ 2318 叉積的簡單應用

2021-06-23 03:48:49 字數 936 閱讀 8789

最近開始學習計(keng)算(die)幾何,第一道入門題就是這道了。

本題最核心的問題,就是如何判斷乙個點在直線(線段)的什麼位置。這一點叉積可以很容易地做到。

設直線(線段)的向量為s->e, 詢問點為p, 那麼我們只需要計算一下 s->p x s->e, 如果大於0,說明s->p 順時針旋轉會達到s->e, 等於0說明就在直線上,小於0說明它需要逆時針旋轉才能達到s->e。 

在這道題裡,如果我們始終選擇s是上面的點,e是下面的點的話,那麼s->p如果順時針旋轉能達到s->e,說明p在這條線段左邊,就滿足要求了。用叉積判斷的時候,大於0小於0跟你所選的向量起終點以及誰x誰都有關係,最後判出順時針逆時針也需要自己想想是在直線的哪邊……

最後是**,第一次寫,可能還比較醜陋……

#include#include#include#includeusing namespace std;

typedef long long ll;

struct ptype

;

ptype(ll _x, ll _y)

ptype operator + (ptype p)

ptype operator - (ptype p)

ll cross(ptype p)

}; struct segtype;

int n,m;

ll box_x0, box_y0, box_x1, box_y1;

segtype seg[5010];

int ans[5010];

void init()

int main()

for(i=1;i<=m;i++)

ans[high]++;

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

printf("\n");

}return 0;

}

叉積 二分 poj2318

1 通過結果的正負判斷兩向量之間的順逆時針關係 若 a x b 0表示a在b的順時針方向上 若 a x b 0表示a在b的逆時針方向上 若 a x b 0表示a在b共線,但不確定方向是否相同 2 判斷折線拐向,可轉化為判斷第三點在前兩的形成直線的順逆時針方向,然後判斷拐向。3 判斷乙個點在一條直線的...

POJ2318(叉積 二分)

題意 給了m個點,落在n 1個區域中,問各個區域有多少個點。思路 玩具的點和隔板的上下頂點連的邊求叉積,如果小於0,說明點在隔板左邊,用二分找每個隔板區間對應的玩具數。include include include include include include include include in...

ACM練級日誌 POJ 2155 1151

這些日誌僅供以後防止自己出現過去犯過的錯誤,起到乙個註記的作用。若其他的acmer覺得有用的話,本人也感到欣慰 最近一直在練線段樹,說說線段樹的 染色問題 和 計數問題 比如poj的2155,level 2的一道題,入門二維線段樹,這道題一開始被我當成了染色問題。本來想用每個node去記錄這一段是0...