1:通過結果的正負判斷兩向量之間的順逆時針關係
若 a x b > 0表示a在b的順時針方向上
若 a x b < 0表示a在b的逆時針方向上
若 a x b == 0表示a在b共線,但不確定方向是否相同
2:判斷折線拐向,可轉化為判斷第三點在前兩的形成直線的順逆時針方向,然後判斷拐向。
3:判斷乙個點在一條直線的那一側,同樣上面的方法。
5:判斷兩條直線是否想交(跨立實驗)
因為這個叉積大小的問題染了半天,這裡的**是以底下b點為原地的,所以說與結論恰好相反。(一直把自己繞進去了,浪費了一天的時間啊)
#include #include#include#includeusing namespace std;
struct point
point[5010];
struct line
line[5010];
int ans[5010];
int mult(point p1,point p2,point p0)
void bs(point t,int n)
if(mult(t,line[begin].a,line[begin].b)>0) ans[begin+1]++;
else ans[begin]++;
}int main()
{ int n,m;
while(scanf("%d",&n)!=eof)
{if(n==0) break;
scanf("%d",&m);
memset(ans,0,sizeof(ans));
int xx1,xx2,yy1,yy2;
scanf("%d%d%d%d",&xx1,&yy1,&xx2,&yy2);
for(int i=0;i
POJ2318(叉積 二分)
題意 給了m個點,落在n 1個區域中,問各個區域有多少個點。思路 玩具的點和隔板的上下頂點連的邊求叉積,如果小於0,說明點在隔板左邊,用二分找每個隔板區間對應的玩具數。include include include include include include include include in...
poj 2318 二分 叉積
n個隔板和m個玩具位置均已知,n個隔板將矩形盒子分為n 1個區域。已知隔板可看作上端點在矩形的上邊,下端點在矩形的下邊的一條線段。且隔板是按照從左到右的順序輸入的。問每個區域內有幾個玩具。1.二分 假如第i個玩具在第x個隔板的左側,那麼一定在第y y x 個隔板的左側,符合單調性,可以二分。poj ...
POJ 2318 TOYS(叉積 二分)
click here 題意 有乙個矩形的盒子,中間插了n個擋板,將盒子分成n 1個區域,然後給m個點,問最後每個區域落下多少個點。點不會落到擋板上 解題思路 把矩形的右邊看成第n 1個擋板。稍加分析,得到這個特點 若點 k 在擋板 i 的左邊,那麼 k 也一定在擋板 j 的左邊 i j n 1 則對...