[poj2318]TOYS(直线与点的位置关系)
解题关键:计算几何入门题,通过叉积判断。
两个向量的关系:
P*Q>0,Q在P的逆时针方向;
P*Q<0,Q在P的顺时针方向;
P*Q==0,Q与P共线。
实际就是用右手定则判断的。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cstdlib>
#include<cmath>
#include<iostream>
using namespace std;
typedef long long ll;
struct point{
int x,y;
};
int n,m,x1,x2,y11,y2;
struct Line{
point a,b;
}A[];
double operator*(point p1,point p2){return p1.x*p2.y-p2.x*p1.y;}
point operator-(point A,point B){return {A.x-B.x,A.y-B.y};}
int pos[];
bool judge(point t,int mid){//叉积
point tt=A[mid].b-A[mid].a;
int ans=tt*(t-A[mid].a);
return ans<=;
} int erfen(point xx){
int l=,r=n;
while(l<r){
int mid=(l+r)>>;
if(judge(xx,mid)) r=mid;
else l=mid+;
}
return r;
} int main(){
while(scanf("%d",&n)!=EOF&&n){
scanf("%d%d%d%d%d",&m,&x1,&y11,&x2,&y2);
for(int i=;i<n;i++){
int xd,xu;
scanf("%d%d",&xu,&xd);
A[i]={{xu,y11},{xd,y2}};
}
memset(pos,,sizeof pos);
for(int i=;i<m;i++){
int xx,yy;
scanf("%d%d",&xx,&yy);
point t={xx,yy};
int ans=erfen(t);
pos[ans]++;
}
for(int i=;i<=n;i++){
printf("%d: %d\n",i,pos[i]);
}
printf("\n");
}
return ;
}
[poj2318]TOYS(直线与点的位置关系)的更多相关文章
- POJ_2318_TOYS&&POJ_2398_Toy Storage_二分+判断直线和点的位置关系
POJ_2318_TOYS&&POJ_2398_Toy Storage_二分+判断直线和点的位置 Description Calculate the number of toys th ...
- Segments---poj3304(判断直线与线段的位置关系)
题目链接:http://poj.org/problem?id=3304 题意:给你n个线段,求是否有一条直线与所有的线段都相交,有Yes,没有No; 枚举所有的顶点作为直线的两点,然后判断这条直线是否 ...
- TOYS(计算几何基础+点与直线的位置关系)
题目链接:http://poj.org/problem?id=2318 题面: TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submiss ...
- POJ 2398 - Toy Storage 点与直线位置关系
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5439 Accepted: 3234 Descr ...
- Intersecting Lines---poj1269(求两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题意:给你两条直线上的任意不同的两点,然后求两条直线的位置关系,如果相交于一点输出该点坐标; #include<iostr ...
- 判断两条直线的位置关系 POJ 1269 Intersecting Lines
两条直线可能有三种关系:1.共线 2.平行(不包括共线) 3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...
- Intersecting Lines (计算几何基础+判断两直线的位置关系)
题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...
- poj 1269 判断直线的位置关系
题目链接 题意 判断两条直线的位置关系,重合/平行/相交(求交点). 直线以其上两点的形式给出(点坐标为整点). 思路 写出直线的一般式方程(用\(gcd\)化为最简), 计算\(\begin{vma ...
- POJ-2318 TOYS 计算几何 判断点在线段的位置
题目链接:https://cn.vjudge.net/problem/POJ-2318 题意 在一个矩形内,给出n-1条线段,把矩形分成n快四边形 问某些点在那个四边形内 思路 二分+判断点与位置关系 ...
随机推荐
- jquery——简单的下拉列表制作及bind()方法的示例
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 1D/1D优化dp之利用决策点的凸性优化
关于dp的优化之前做过一些简单的利用优先队列或者单调队列维护一个值就ok了,但有时候给出的方程很难直接用单调队列维护,需要转化一下思路. 这种优化方式利用数形结合,根据比较斜率来抛去一些非最优解,能将 ...
- Java源码阅读的真实体会(一种学习思路)【转】
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...
- Android自定义组件之ListView
1-ListView简介 在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.一个ListView通常有两个职责. (1)将数据填充到 ...
- python MySQLdb连接mysql失败(转载)
最近了解了一下django,数据库选用了mysql, 在连接数据库的过程中,遇到一点小问题,在这里记录一下,希望能够对遇到同样的问题的朋友有所帮助,少走一些弯路.关于django,想在这里也额外说一句 ...
- JVM和Dalvik VM的简要区别
一.结构 JVM是栈堆 Dalvik VM是寄存器 二.编译 JVM:.java>.class>.jar Dalvik VM:.java>.class>.dex>.o ...
- Codeforces Round #277.5 (Div. 2)D Unbearable Controversy of Being (暴力)
这道题我临场想到了枚举菱形的起点和终点,然后每次枚举起点指向的点,每个指向的点再枚举它指向的点看有没有能到终点的,有一条就把起点到终点的路径个数加1,最后ans+=C(路径总数,2).每两个点都这么弄 ...
- unity 联机调试(android ios)
http://blog.csdn.net/OnafioO/article/details/44903491 (这种没用,只是在手机看到画面而已) 手机安装unityRemote并运行,unity中设置 ...
- UDP打洞原理及代码
来源:http://www.fenbi360.net/Content.aspx?id=1021&t=jc UDP"打洞"原理 1. NAT分类 根据Stun协议 ...
- [转]AngularJS 之 Factory vs Service vs Provider
地址: http://www.oschina.net/translate/angularjs-factory-vs-service-vs-provider