POJ2318(叉積 二分)

2021-08-26 18:02:51 字數 1014 閱讀 7762

題意:給了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 則對...