POJ 2318 TOYS 计算几何 入门题 叉积 + 二分
2012-08-15 14:15
513 查看
第一题计算几何,1A,好开心哦。
View Code
View Code
#include<stdio.h> #include<string.h> #include<math.h> struct point { int x, y; }; int up[5007],down[5007];; int n, m; point toy[5007]; point a, b; int ans[5007]; int cross(point o, point a, point b) { return ((a.x-o.x)*(b.y-o.y)-(a.y-o.y)*(b.x-o.x)); } int find(point key) { int l , r, mid; l = 0; r = n+1; point upp, downn; upp.y = a.y; downn.y = b. y; while(l <= r) { mid = (l + r) >> 1; upp.x = up[mid]; downn.x = down[mid]; if(cross(downn, upp, key) > 0 ) r = mid - 1; else l = mid + 1; } return l; } int main() { int i, j; while( ~scanf("%d", &n) && n) { scanf("%d", &m); scanf("%d%d%d%d",&a.x, &a.y, &b.x, &b.y); up[0] = down[0] = a.x; up[n+1] = down[n+1] = b.x; for(i = 1; i <= n; i++) scanf("%d%d",&up[i], &down[i]); memset(ans, 0, sizeof(ans)); for(i=1;i<=m;i++) { scanf("%d%d", &toy[i].x, &toy[i].y); int index = find(toy[i]); ans[index-1]++; } for(i=0;i<=n;i++) printf("%d: %d\n",i, ans[i]); printf("\n"); } return 0; }
相关文章推荐
- POJ 2318 TOYS 计算几何 入门题 叉积 + 二分
- POJ 2318 TOYS [叉积判断+二分查找]【计算几何】
- POJ 2318 TOYS(计算几何)(二分)
- 【POJ】2318 TOYS ——计算几何+二分
- POJ 2318 TOYS (计算几何,叉积判断)
- POJ 2318 TOYS (计算几何,向量积,二分查找)
- poj 2318 二分+叉积计算几何基础
- poj 2318 toys 计算几何+二分
- Poj 2318 toys (计算几何,叉积)
- POJ 2318 TOYS(计算几何入门)
- TOYS - POJ 2318(计算几何,叉积判断)
- POJ 2318 TOYS(计算几何+点与直线位置关系+二分)
- POJ 2318 TOYS (二维叉积、二分)
- Poj 2318 TOYS (叉积+二分)
- 文章标题 POJ 2318 : TOYS (计算几何)
- poj 2318 TOYS(计算几何 点跟直线的位置关系)
- poj 2318 TOYS (计算几何)
- poj 2318 TOYS (二分+叉积)
- POJ 2318(计算几何初步——叉积加2分)
- [POJ2318]TOYS(计算几何-叉积+二分)