POJ2318计算几何
来源:互联网 发布:虚拟机nat网络不稳定 编辑:程序博客网 时间:2024/05/13 16:18
POJ2318
题意:一个矩形被分为n+1块,每个玩具都有坐标,求玩具在哪个块里面;
我一开始,没完全理解叉积,把叉积的方向弄错了;
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;struct Point{ double x,y;}point[5005];struct Line{ Point a,b;}line[5005];double cross(Point p0,Point p1,Point p2) //p0在p1p2的什么方向,而不是p0在p2p1的方向,注意{ return (p0.x-p1.x)*(p2.y-p1.y)-(p2.x-p1.x)*(p0.y-p1.y);}int box[5005];int main(){ int n,m,cc=0; double x1,y1,x2,y2; while( scanf("%d",&n)&&n ) { if( cc ) cout<<endl; cc=1; memset(box,0,sizeof(box)); scanf("%d%lf%lf%lf%lf",&m,&x1,&y1,&x2,&y2); for(int i=1;i<=n;i++) { double U,L; scanf("%lf%lf",&U,&L); line[i].a.x=U;line[i].a.y=y1; line[i].b.x=L;line[i].b.y=y2; } line[0].a.x=x1;line[0].a.y=y1; line[0].b.x=x1;line[0].b.y=y2; line[n+1].a.x=x2;line[n+1].a.y=y1; line[n+1].b.x=x2;line[n+1].b.y=y2; for(int i=1;i<=m;i++) { double x,y; scanf("%lf%lf",&x,&y); point[i].x=x; point[i].y=y; } for(int i=1;i<=m;i++) { int l=0,r=n+1,flag=0; while( l!=r&&(l+1)!=r ) { int mid=(l+r)/2; double k=cross(point[i],line[mid].b,line[mid].a); //叉积方向不能错了; if( k<0 ) r=mid; else l=mid; //printf("%d %d %d %.2lf\n",l,r,mid,k); } box[l]++; } for(int i=0;i<=n;i++) { printf("%d: %d\n",i,box[i]); } } return 0;}
- 【计算几何】 poj2318 TOYS
- POJ2318计算几何
- POJ2318(计算几何)
- poj2318计算几何入门
- POJ2318(计算几何)
- poj2318 TOYS (计算几何)
- poj2318 Toys 【计算几何】
- poj2398+poj2318(计算几何+二分)
- poj2318 toy 计算几何+二分
- poj2318 TOYS(计算几何)
- POJ2318 计算几何简单题
- POJ2318-toys(计算几何基础+二分)
- poj2318 TOYS(计算几何+叉积+二分)
- [POJ2318]TOYS(计算几何+二分)
- [POJ2318]TOYS(计算几何+二分)
- poj2318—TOYS(计算几何+二分)
- POJ2318 TOYS(叉积,计算几何)
- POJ2318 计算几何利用简单的叉积运算
- hdu1518 Square
- Redis.conf
- C/C++--常见错误
- POJO、Java bean、EJB的概念解析
- 如何抓取网页中的实时监测数据进行分析
- POJ2318计算几何
- 模拟说收发表及回复
- 关于指针分配是否要delete的问题[转载]
- ssh 连接 通过公钥体制,无密码登陆
- 学习java 程序员技术练级攻略 作者:酷壳
- jquery广告浮动插件
- ios 真机调试时出现CopyPngFile error解决方法
- Unable to find 'struts.multipart.saveDir' property setting.
- 大白话解析模拟退火算法