點我看題
題意:用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...