poj 2398 Toy Storage(计算几何,点跟直线的位置关系)
来源:互联网 发布:数据分析下载- 编辑:程序博客网 时间:2024/05/18 01:14
原题友情链接直通车~鼠标点击此处打开~poj 2398
这个题是poj 2318 的变形 点此打开链接poj 2318 题解报告
主要就是告诉你的划分的线段的顺序不是有序的了。然后再输出要求上要求输出的是有m个玩具的箱子的个数。
主要思路不变,只要把line数组里的直线排个序,跟2318一样的做法AC。
具体实现看代码。
#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>using namespace std;const int Maxsize = 5010;typedef struct{int x,y;}point;typedef struct{point a,b;}Line;Line line[Maxsize];int cnt[Maxsize];bool cmp(Line A,Line B){if(A.a.x != B.a.x ){return A.a.x < B.a.x;}else{return A.b.x < B.b.x;}}int crossProduct(point p1,point p2,point p0)/*叉乘判断点跟直线的位置关系*/{return (p1.x - p0.x)*(p2.y - p0.y) - (p2.x - p0.x)*(p1.y - p0.y);}void found(point p0,int n)/*二分找区域*/{int r,l,mid;l = 0 , r = n -1;while(l < r){mid = (r + l )>>1;if(crossProduct(p0,line[mid].a,line[mid].b) > 0){l = mid+1;}else{r = mid;}}if(crossProduct(p0,line[l].a,line[l].b) < 0) cnt[l]++;else cnt[l+1]++;}intmain(){int n,m,x1,y1,x2,y2,t1,t2,ct;int key[Maxsize];while(scanf("%d",&n) && n){ scanf("%d %d %d %d %d",&m,&x1,&y1,&x2,&y2); ct = 0;memset(cnt,0,sizeof(cnt));memset(key,0,sizeof(key));for(int i = 0 ; i < n ; i++){scanf("%d %d",&t1,&t2);line[ct].a.x = t1;line[ct].b.x = t2;line[ct].a.y = y1;line[ct++].b.y = y2;}sort(line,line+n,cmp);/*对线段进行排序*/for(int i = 0 ; i < m ; i++){point p;scanf("%d %d",&p.x,&p.y);found(p,n);}int Maxcost = -1;for(int i = 0 ; i <= n ; i++){if(Maxcost < cnt[i]){Maxcost = cnt[i];}}for(int i = 1 ; i <= Maxcost ; i++)/*统计有相同玩具数量的箱子的个数*/{for(int j = 0 ; j <= n ; j++){if(cnt[j] == i){key[i]++;}}}printf("Box\n");for(int i = 1 ; i <= Maxcost ; i++){if(key[i]){printf("%d: %d\n",i,key[i]);}}}return 0;}
- poj 2398 Toy Storage(计算几何,点跟直线的位置关系)
- POJ 2398 Toy Storage 计算几何(点与直线的关系)
- POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)
- poj 2318 TOYS(计算几何 点跟直线的位置关系)
- POJ 2318 TOYS + POJ 2398 Toy Storage (点与直线的位置关系)
- POJ 2398 Toy Storage(点与直线关系 + 二分)
- poj 2398 Toy Storage 【计算几何】【点和线的关系】
- poj 2398 Toy Storage(计算几何)
- 【POJ 2398】Toy Storage(计算几何)
- poj 2398 Toy Storage (计算几何)
- POJ 2398 Toy Storage (判断点与直线关系+排序二分计数)
- POJ--2398 -- Toy Storage [计算几何]
- POJ 2398 Toy Storage(计算几何)
- POJ 2398 Toy Storage(计算几何)
- poj 2398 Toy Storage (计算几何)
- poj 2398 Toy Storage 计算几何+二分
- poj 题目2398 Toy Storage (简单计算几何)
- poj 2398 Toy Storage(计算几何:叉积)
- 确保对象的唯一性——单例模式 (四)
- JVM调优(八)-典型配置举例2
- android开发环境搭建备忘录 for win7
- hdu 1272 小希的迷宫
- 使用FOR XML AUTO控制XML输出
- poj 2398 Toy Storage(计算几何,点跟直线的位置关系)
- V$SQL视图中SQL_TEXT的SQL语句是绑定变量,常量在v$sql_bind_capture视图的VLUE_STRING字段中可以查到
- JVM调优(九)-新一代的垃圾回收算法
- OGG DDL 双向同步
- boost------asio库的使用2(Boost程序库完全开发指南)读书笔记
- 在Django中使用最新版tinymce
- IOSOpenDev~抛弃数据线,用无线路IFILE上传文件
- 解析Excel,通过Excel驱动测试数据参数化
- JVM调优(十)-调优方法