乙個矩形,n(n<=5e3)個玩具,m(m<=5e3)個擋板,
問每個玩具在哪個區域,1號擋板左側為0號區域,右側為1號區域,以此類推
記向量p=(隔板的上端點->玩具),向量q=(隔板的上端點->隔板的下端點),
那麼如果q旋轉到p為逆時針,即q*p>0,說明玩具在隔板右側;
二分找到最右的隔板,滿足玩具在隔板右側即可
#include#include#include#includeusing namespace std;
const int n=5005;
struct point
//建構函式
point(int xx,int yy)
point operator-(const point a)const
}; //原序列和凸包序列
double det (point a, point b)
int n,m,x1,y1,x2,y2,x,y;
int u[n],l[n],u,l;
int cnt,num[n];
int main()
num[r]++;
} for(int i=0;iputs("");
} return 0;
}
叉積的性質 poj2318 TOYS
題目大意 給定乙個矩形,中間有n塊板把這個矩形分成n 1塊,從0開始編號。保證按照順序給出並且沒有相交。給定m個點,詢問每乙個塊內有多少個點。題目分析 對於每乙個點二分所有的線段,然後利用叉積的性質判斷它在這條線的左邊還是右邊,統計答案。時間複雜度o mlogn 水題一枚 我這種蒟蒻也就能做這種題了...
POJ 2318 TOYS 向量叉積運算
題意,給出一塊方框的左上 右下角座標,然後輸入n個擋板的兩端點座標 擋板從0 n 1 標記 再輸入m個玩具丟到框內的座標。資料保證玩具丟到框裡,且擋板已經從左到右排好序。輸出落在每塊擋板前空間內的玩具個數。類似的方法以前在杭電oj遇到過,是一道計算多邊形面積題目。當時沒有學向量積運算,所以最後只是記...
POJ 2318 TOYS(叉積 二分)
click here 題意 有乙個矩形的盒子,中間插了n個擋板,將盒子分成n 1個區域,然後給m個點,問最後每個區域落下多少個點。點不會落到擋板上 解題思路 把矩形的右邊看成第n 1個擋板。稍加分析,得到這個特點 若點 k 在擋板 i 的左邊,那麼 k 也一定在擋板 j 的左邊 i j n 1 則對...