poj-2318-TOYS-计算几何
2014-03-24 13:36
330 查看
判断一个点在一条直线的哪一侧的时候,可以使用两种方法。
1,用叉积判左右
2,使用直线的斜率判断左右
1,用叉积判左右
2,使用直线的斜率判断左右
#include<iostream> #include<string.h> #include<algorithm> #include<stdio.h> using namespace std; int pan(int x1,int y1,int x2,int y2) { return x1*y2-x2*y1; } int uu[5500]; int ll[5500]; int num[5500]; int main() { int n,m,x1,y1,x2,y2,x,y; int i; while(cin>>n) { if(n==0)break; cin>>m>>x1>>y1>>x2>>y2; memset(num,0,sizeof(num)); for(i=1;i<=n;i++) { scanf("%d%d",&uu[i],&ll[i]); } for(i=1;i<=m;i++) { scanf("%d%d",&x,&y); if(!(x>=x1&&x<=x2&&y>=y2&&y<=y1))continue; int l=1; int r=n+1; int mid=(l+r)/2; while(l<r) { if(pan(x-ll[mid],y-y2,uu[mid]-x,y1-y)>0)l=mid+1; else r=mid; mid=(l+r)/2; } num[mid-1]++; // cout<<mid<<endl; } for(i=0;i<=n;i++) { printf("%d: %d\n",i,num[i]); } cout<<endl; } return 0; }
相关文章推荐
- poj 2318 TOYS(计算几何)
- POJ 2318 TOYS(计算几何)(二分)
- poj2318——TOYS(计算几何+点与线段的位置)
- poj 2318 toys 计算几何+二分
- POJ 2318 TOYS(计算几何)
- POJ 2318 TOYS [叉积判断+二分查找]【计算几何】
- POJ 2318 TOYS 计算几何 入门题 叉积 + 二分
- 文章标题 POJ 2318 : TOYS (计算几何)
- 【POJ】2318 TOYS ——计算几何+二分
- POJ--2318 -- TOYS [点、线基本关系] [计算几何]
- POJ 2318 TOYS 计算几何(点与直线关系)
- POJ 2318 TOYS(计算几何)
- POJ 2318:TOYS & POJ 2398:Toy Storage 计算几何
- poj 2318 TOYS (计算几何)
- poj 2318 TOYS (计算几何)
- A - TOYS(POJ - 2318) 计算几何的一道基础题
- poj 2318 TOYS(计算几何 点与线段的关系)
- 【POJ】2318 TOYS(计算几何基础+暴力)
- POJ 2318 TOYS(计算几何入门)
- POJ 2318 TOYS 计算几何 入门题 叉积 + 二分