POJ 2318 TOYS 計算幾何

2021-08-06 05:35:14 字數 934 閱讀 7348

點我看題

題意:用n個分隔板把乙個矩形分成n+1個部分,然後有m個點分布在這個矩形上,問每個區域上能有多少個點。

分析:利用叉乘和二分解題。首先預處理出這些分隔板,然後對每個點進行二分,二分條件是看當前要判斷的點在隔板的左還是右,而利用叉乘正好可以判斷點在左還是右邊。

#include#include#include#include#includeusing namespace std;

#define mem(a,b) memset(a,b,sizeof(a))

const int maxn = 5e3+5;

int n,m,px1,py1,px2,py2;

struct point

point( int xx, int yy)

point operator - ( const point &p)const

int operator * ( const point &p)const

};struct line

line( point ss, point ee)

};line line[maxn];

int ans[maxn];

//叉乘計算,返回p1p2×p1p3

int xmult( point p1, point p2, point p3)

int main()

line[n] = line(point(px2,py1),point(px2,py2));

mem(ans,0);

while( m--)

else

l = mid+1;

}ans[tmp]++;

}for( int i = 0; i <= n; i++)

printf("%d: %d\n",i,ans[i]);

}return 0;

}

POJ 2318 TOYS(計算幾何)

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

poj2318 TOYS(計算幾何)

那些年不想寫的計算幾何,總有一天要還。直接列舉點,列舉四邊形即可,只要用叉乘判斷點是否在兩條線段中間即可。o n m o nm o nm include include include include include using namespace std define ll long long d...

POJ 2318 TOYS(計算幾何入門)

題意 題意就是給你一連串的四邊形區域,再給你一些點,讓你判斷每個四邊形內 包括邊界有多少個點。很簡單的題目,用叉積就能判斷點和直線的關係。created by cqu cst wuerli include include include include include include include...