POJ 2318 TOYS
来源:互联网 发布:淘宝手机端怎么改好评 编辑:程序博客网 时间:2024/06/04 01:14
二分。
添加一个编号为0的直线,为格子的左边框。二分,叉积判断离点最近的左边第一条直线编号即可。
早上脑子有点不清楚,犯了一些奇怪的错误,狂WA不止。。。
#include<cstdio>#include<cstring>double x1[5005], x2[5005], X1, Y1, X2, Y2;int cnt[5005], n, m;bool cross(double x, double y, double up_x, double down_x){ double x1=down_x-x, x2=up_x-x, y1=Y2-y, y2=Y1-y; return x1*y2-x2*y1<0;}int main(){ while(scanf("%d",&n)) { if(!n){break;} scanf("%d",&m); memset(cnt,0,sizeof(cnt)); scanf("%lf%lf%lf%lf",&X1,&Y1,&X2,&Y2); x1[0]=x2[0]=0; for(int i = 1; i <= n; i++) { scanf("%lf%lf",&x1[i],&x2[i]); x1[i]-=X1; x2[i]-=X1; } for(int i = 1; i <= m; i++) { double x,y; scanf("%lf%lf",&x,&y); x-=X1; int l = 0, r = n; while(l<r) { int mid=(l+r+1)>>1; if(cross(x,y,x1[mid],x2[mid]))l=mid; else r=mid-1; } cnt[l]++; } for(int i = 0; i <= n; i++) printf("%d: %d\n",i,cnt[i]); puts(""); }}
1 0
- 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 - 2318 - TOYS
- poj 2318 TOYS
- POJ 2318 TOYS
- poj 2318 TOYS
- poj 2318 TOYS
- POJ 2318 TOYS
- poj 2318 Toys
- POJ 2318 TOYS
- Same Tree Leetcode
- C语言查询数据库返回结果中文乱码
- python控制台查看某个包文件路径和源码
- mybatis 二级缓存
- ios视图frame与bounds的区别
- POJ 2318 TOYS
- Android中的Touch事件
- day8-18(异常)
- 求最大连续子序列的和
- CornerStone上传静态库(.a文件)
- 英文排序和中文排序
- 用CornerStone配置SVN,HTTP及svn简单使用说明
- Unity3D 5.X Pro破解方法
- 模仿腾讯QQ的web登陆面板