poj 2318 叉积解点和直线的关系
来源:互联网 发布:mac六国 解决方法 编辑:程序博客网 时间:2024/05/17 23:28
要判断点的位置,就是利用二分法判断和分界线的相对位置,最终确定点的所在块,利用数组,判断点的位置时利用叉积算有方向的面积.
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cstdlib>//#include <cmath>#define MAX 5007using namespace std;struct Point { int x , y; Point ( ) : x(0) , y(0) {} Point ( int a , int b ) : x(a),y(b){}}p;struct Line { Point up , down;}l[MAX];int det ( Point a , Point b ){ return a.x * b.y - a.y*b.x;}int n,m,x1,y1,x2,y2,u,d;int id ( Point p ){ if ( det ( Point ( p.x - l[n].down.x , p.y - l[n].down.y ) , Point ( l[n].up.x - p.x , l[n].up.y - p.y)) > 0 ) return n+1; int left = 1 , right = n , mid; while ( left != right ) { mid = left + right >> 1; // cout << mid << endl; //cout << det ( Point ( p.x-l[mid].down.x , p.y-l[mid].down.y ) , // Point ( l[n].up.x - p.x , l[mid].up.y - p.y)) << endl; if ( det ( Point ( p.x-l[mid].down.x , p.y-l[mid].down.y ) , Point ( l[mid].up.x - p.x , l[mid].up.y - p.y )) > 0 ) left = mid + 1; else right = mid; } return left; }int main ( ){ int ans [MAX]; while ( ~scanf("%d" , &n ),n ) { scanf ( "%d%d%d%d%d" , &m , &x1 , &y1 , &x2 , &y2 ); memset ( ans , 0 , sizeof ( ans ) ); for ( int i = 1 ; i <= n ; i++ ) { scanf ( "%d%d" , &l[i].up.x , &l[i].down.x ); l[i].up.y = y1 , l[i].down.y =y2; } for ( int i = 1 ; i <= m ; i++ ) { scanf ( "%d%d" , &p.x , &p.y ); ans[id( p )]++; } for ( int i = 1 ; i <= n+1 ; i++ ) printf ( "%d: %d\n" , i-1 , ans[i] ); printf ( "\n" ); } }
0 0
- poj 2318 叉积解点和直线的关系
- POJ 1269 判断直线和直线关系
- POJ 3304 Segments 【计算几何】【直线和线段的关系】
- poj 2318 直线和点位置关系(二分查找)
- poj 1269 Intersecting Lines[直线的关系]
- POJ 1269 直线位置关系的判断
- POJ 2318 TOYS + POJ 2398 Toy Storage (点与直线的位置关系)
- [笔记]点和直线的位置关系
- 求直线和圆的关系
- 求直线和圆的关系 c#
- poj 2318 TOYS(计算几何 点跟直线的位置关系)
- POJ 1269 Intersecting Lines(判断直线的位置关系)
- poj 1269 两条直线的位置关系
- poj 1269 判断两直线的关系并求交点
- poj 1269 Intersecting Lines 【判断两条直线的关系】
- POJ 1039 Pipe (直线与线段间的关系)
- poj 1269 Intersecting Lines 判断直线的位置关系
- poj 3304 Segments 线段与直线的关系
- hadoop学习之路----HDFS原理与基本架构总结(第二讲)
- 五子棋控制台显示
- wcf和iis最基本的配置
- Unity3D技术之运行时加载资源浅析
- 癫痫治疗方法 01xsnmtc
- poj 2318 叉积解点和直线的关系
- java--练习day01
- DB2 的Max Key Length
- auto.offset.reset解释
- Microsoft.Web.Administration in IIS 7
- Unity3D技术之用程序生成网格几何体-示例–创建一个广告牌
- UVa 512 模拟!
- java学习之路
- 【BZOJ2132】 圈地计划 最小割