題意:給了m個點,落在n+1個區域中,問各個區域有多少個點。
思路:玩具的點和隔板的上下頂點連的邊求叉積,如果小於0,說明點在隔板左邊,用二分找每個隔板區間對應的玩具數。
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=5005;
const double eps=1e-8;
const double pi = acos(-1.0);
#define lowbit(x) (x&(-x))
struct point
point(double _x,double _y)
point operator - (const point &b)const
double operator ^(const point &b)const
};struct line
line(point _s,point _e)
};double cha(point a,point b,point c) //ab^ac
int ans[maxn];
int main()
l[n]=line(point(x2,y1),point(x2,y2));
int x,y,ans[maxn]=;
for(int i=0;i>x>>y;
point p(x,y);
int l=0,r=n,tmp;
while(l<=r)
else
}ans[tmp]++;
}for(int i=0;i<=n;i++)
cout<}
return 0;
}
叉積 二分 poj2318
1 通過結果的正負判斷兩向量之間的順逆時針關係 若 a x b 0表示a在b的順時針方向上 若 a x b 0表示a在b的逆時針方向上 若 a x b 0表示a在b共線,但不確定方向是否相同 2 判斷折線拐向,可轉化為判斷第三點在前兩的形成直線的順逆時針方向,然後判斷拐向。3 判斷乙個點在一條直線的...
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 則對...