POJ 2318 TOYS 點與線段關係

2021-06-08 09:36:17 字數 734 閱讀 2382

乙個玩具箱被n個擋板分成n+1快,擋板不會互相交叉。將m個玩具扔進去,求分別被扔進了哪個區域。

主要演算法就是判斷點與線段的關係,排序後從左往右依此判別即可。

//memory: 480k

//time: 485ms

#include #include #include using namespace std;

struct point //點

; point(double _x, double _y):x(_x),y(_y){};

};struct lineseg //線段

lineseg()

};double relation_lr(point p,lineseg l) //return<0 p在l左側 return>0 p在l右側

bool cmpl(lineseg l1,lineseg l2)

for(i=1;i<=m;i++)

cin>>p[i].x>>p[i].y;

sort(l,l+n+1,cmpl);

sort(p+1,p+m+1,cmpp);

i=0;j=1;

while(i<=n)

else if(relation_lr(p[j],l[i])>0)

else if(relation_lr(p[j],l[i])<0)

if(j>m)

break;

} if(!flag)

cout<

poj 2318 TOYS 點與矩形的關係

假設玩具 p 在第 i 個區域,其左邊為第 i 條線段 a 1b 1 右邊為第 i 1 條線段 a 2b 2 a 在上邊,b 在下邊 則有 overrightarrow times overrightarrow gt 0 且 overrightarrow times overrightarrow l...

POJ 2318 TOYS(計算幾何)

description 乙個矩形區域中有n條互不相交的線段,每條線段的上下端點分別在矩形的上下邊上,現給出該矩形區域中m個點的座標,保證點不在邊上,統計由這n條邊將矩形分成的n 1個區域中各有多少個點 input 多組用例,每組用例第一行六個整數n,m,xl,yl,xr,yr分別表示邊數,點數,矩形...

POJ 2318 TOYS 計算幾何

點我看題 題意 用n個分隔板把乙個矩形分成n 1個部分,然後有m個點分布在這個矩形上,問每個區域上能有多少個點。分析 利用叉乘和二分解題。首先預處理出這些分隔板,然後對每個點進行二分,二分條件是看當前要判斷的點在隔板的左還是右,而利用叉乘正好可以判斷點在左還是右邊。include include i...