题目大意:

n块玩具箱隔板 m个玩具落地点 给定玩具箱的左上和右下两个端点

接下来给定n块隔板的上点的x和下点的x(因为y就是玩具箱的上下边缘)

接下来给定m个玩具落地点

输出n+1个区域各有的玩具数量

只要判断一下玩具落地点对于n条直线的相对位置即可

当它位于某条直线的左侧时 说明它位于当前直线内的区域

#include <cstdio>
#include <cmath>
#include <string.h>
#include <algorithm>
using namespace std;
const double eps=1e-;
double add(double a,double b)
{
if(abs(a+b)<eps*(abs(a)+abs(b))) return ;
return a+b;
}
struct P {
double x,y;
P(){};
P(double _x,double _y):x(_x),y(_y){};
P operator - (P p) {
return P(add(x,-p.x),add(y,-p.y)); };
P operator + (P p) {
return P(add(x,p.x),add(y,p.y)); };
P operator * (double d) {
return P(x*d,y*d); };
double dot (P p) {
return add(x*p.x,y*p.y); };
double det (P p) {
return add(x*p.y,-y*p.x); };
}st,ed,a[],b[],toy;
int ans[];
int n, m;
int main()
{
while(~scanf("%d",&n)) {
if(n==) break;
scanf("%d%lf%lf%lf%lf",&m,&st.x,&st.y,&ed.x,&ed.y);
for(int i=;i<n;i++) {
scanf("%lf%lf",&a[i].x,&b[i].x);
a[i].y=st.y, b[i].y=ed.y;
}
a[n].x=ed.x, a[n].y=st.y;
b[n].x=ed.x, b[n].y=ed.y; // 加入玩具箱的右边缘
memset(ans,,sizeof(ans));
for(int i=;i<m;i++) {
scanf("%lf%lf",&toy.x,&toy.y);
int k=;
while((a[k]-toy).det(b[k]-toy)>) k++;
/* 判断直线 直到toy在直线的左侧
>0说明 (a[k]-toy)在(b[k]-toy)顺时针方向
即 toy在直线a[k]b[k]的右侧
*/
ans[k]++;
}
for(int i=;i<=n;i++) printf("%d: %d\n",i,ans[i]);
printf("\n");
}
return ;
}

POJ 2318 /// 判断点与直线的位置关系的更多相关文章

  1. POJ 1269 /// 判断两条直线的位置关系

    题目大意: t个测试用例 每次给出一对直线的两点 判断直线的相对关系 平行输出NODE 重合输出LINE 相交输出POINT和交点坐标 1.直线平行 两向量叉积为0 2.求两直线ab与cd交点 设直线 ...

  2. 判断两条直线的位置关系 POJ 1269 Intersecting Lines

    两条直线可能有三种关系:1.共线     2.平行(不包括共线)    3.相交. 那给定两条直线怎么判断他们的位置关系呢.还是用到向量的叉积 例题:POJ 1269 题意:这道题是给定四个点p1, ...

  3. POJ 2398 map /// 判断点与直线的位置关系

    题目大意: poj2318改个输出 输出 a: b 即有a个玩具的格子有b个 可以先看下poj2318的报告 用map就很方便 #include <cstdio> #include < ...

  4. poj 1269 判断直线的位置关系

    题目链接 题意 判断两条直线的位置关系,重合/平行/相交(求交点). 直线以其上两点的形式给出(点坐标为整点). 思路 写出直线的一般式方程(用\(gcd\)化为最简), 计算\(\begin{vma ...

  5. TOYS(计算几何基础+点与直线的位置关系)

    题目链接:http://poj.org/problem?id=2318 题面: TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submiss ...

  6. Intersecting Lines---poj1269(求两直线的位置关系)

    题目链接:http://poj.org/problem?id=1269 题意:给你两条直线上的任意不同的两点,然后求两条直线的位置关系,如果相交于一点输出该点坐标; #include<iostr ...

  7. 叉积_判断点与三角形的位置关系 P1355 神秘大三角

    题目描述 判断一个点与已知三角形的位置关系. 输入输出格式 输入格式: 前三行:每行一个坐标,表示该三角形的三个顶点 第四行:一个点的坐标,试判断该点与前三个点围成三角形的位置关系 (详见样例) 所有 ...

  8. Intersecting Lines (计算几何基础+判断两直线的位置关系)

    题目链接:http://poj.org/problem?id=1269 题面: Description We all know that a pair of distinct points on a ...

  9. POJ 3304 /// 判断线段与直线是否相交

    题目大意: 询问给定n条线段 是否存在一条直线使得所有线段在直线上的投影存在公共点 这个问题可以转化为 是否存在一条直线与所有的线段同时相交 而枚举直线的问题 因为若存在符合要求的直线 那么必存在穿过 ...

随机推荐

  1. VS 2015 Download

    企业版:http://download.microsoft.com/download/B/8/F/B8F1470D-2396-4E7A-83F5-AC09154EB925/vs2015.ent_chs ...

  2. 在linux中的rpm -ivh 是干什么的呢?

    在linux中的rpm -ivh 是干什么的呢?   RMP 是 LINUX 下的一种软件的可执行程序,你只要安装它就可以了.这种软件安装包通常是一个RPM包(Redhat Linux Packet ...

  3. [NOI.AC] candy

    题意:求净利益. 思路: 其实我也不怎么懂题面. 不过这种题一般来说就是从最大的开始选. 所以考虑贪心. 那么代价如何处理呢?? 我们考虑两个序列同时选数,把代价每次记录到一个序列的和上,那么对于两次 ...

  4. D语言简介

    D语言,一种通用计算机程序语言,威力强大.功能丰富,支持多种编程范式,例如面向对象.[1]  D语言最初由Digital Mars公司就职的Walter Bright于2001年发布,意图改进C++语 ...

  5. 【转】Linux(CentOS) vps安装xfce桌面+VNC

    以前我发过一篇文章利用vnc远程连接VPS桌面,其中用到的是kde桌面,后来知道xfce总体来说比kde占得内存还小些,因为xfce轻便.简单,今天因为一些原因需要在我的vps上搭建用户桌面,所以就试 ...

  6. hexo next主题深度优化(九),给博客加入主题,护眼主题,护眼色。

    文章目录 背景 效果 码 _layout.swig custom.styl eye.js 引用eye.js 直接引用 main.js pjax的函数中重写 个人博客:https://mmmmmm.me ...

  7. (转)coures包下载和安装 可解决报错ImportError: No module named '_curses'

    原创文章,转载请注明出处. coures curses 库 ( ncurses )提供了控制字符屏幕的独立于终端的方法.curses 是大多数类似于 UNIX 的系统(包括Linux)的标准部分,而且 ...

  8. A1095 Cars on Campus (30 分)

    Zhejiang University has 8 campuses and a lot of gates. From each gate we can collect the in/out time ...

  9. Day15:Python 【模块】及__name__:

    什么是模块: 在Python中,随着这代码的撰写,代码越来越长,所以产生了,模块这个概念,模块是什么?模块就是一个.py文件,在撰写代码时,我们把不同的功能的代码封装到一个.py文件里,用得时候导入 ...

  10. 《转》python基础下

    转自http://www.cnblogs.com/BeginMan/archive/2013/04/12/3016323.html 一.数字 在看<Python 核心编程>的时候,我就有点 ...