題目大意:
給定乙個矩形,中間有n塊板把這個矩形分成n+1塊,從0開始編號。
保證按照順序給出並且沒有相交。
給定m個點,詢問每乙個塊內有多少個點。
題目分析:
對於每乙個點二分所有的線段,然後利用叉積的性質判斷它在這條線的左邊還是右邊,統計答案。
時間複雜度o(mlogn)
(水題一枚╮(╯_╰)╭,我這種蒟蒻也就能做這種題了qaq)
**如下:
#include
#include
#define n 5005
using
namespace
std;
struct point
}tmp;
struct linea[n];
int n,m,x1,x2,y1,y2;
int ans[n];
int cross_product(point p1,point p2,point p0)
int bin(point c)
return ans;
}int main()
for(int i=1;i<=m;i++)
for(int i=0;i<=n;i++)
printf("%d: %d\n",i,ans[i]);
printf("\n");
} return
0;}
poj2318 TOYS 叉積性質 二分
乙個矩形,n n 5e3 個玩具,m m 5e3 個擋板,問每個玩具在哪個區域,1號擋板左側為0號區域,右側為1號區域,以此類推 記向量p 隔板的上端點 玩具 向量q 隔板的上端點 隔板的下端點 那麼如果q旋轉到p為逆時針,即q p 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...