题目链接

题意:

给定一个矩形,n个线段将矩形分成n+1个区间,m个点,问这些点的分布。

题解:

思路就是叉积加二分,利用叉积判断点与直线的距离,二分搜索区间。

代码:

最近整理了STL的一些模板,发现真是好用啊orz,为啥以前没发现呢,可能是比较懒吧-.-

#include <stdio.h>
#include <string.h>
#include <cmath>
#include <iostream>
#include <queue>
#include <map>
#include <list>
#include <utility>
#include <set>
#include <algorithm>
#include <deque>
#include <vector>
#define mem(arr,num) memset(arr,0,sizeof(arr))
#define _for(i, a, b) for(int i = a; i <= b; i++)
#define __for(i, a, b) for(int i = a; i >=b; i--)
using namespace std;
typedef long long ll;
const ll INF = 0x3f3f3f3f;
+;
struct P
{
    int x,y;
    P() {}
    P(int a, int b)
    {
        x = a, y = b;
    }
    P operator- (P b)
    {
        return P(x-b.x,y-b.y);
    }
} L,R,p[N];
pair <P, P> pr;
vector<pair<P, P> > line;
double cross(P a, P b) {
    return a.x * b.y - a.y * b.x;
}
double judge(P c, P a, P b){
    return cross(c - a,b - a);
}
int res[N];
int main()
{
    int n, m;
    while(cin >> n, n)
    {
        mem(res,);
        line.clear();
        cin >> m >> L.x >> L.y >> R.x >> R.y;
        pr.second = L;
        pr.first.x = L.x, pr.first.y = R.y;
        line.push_back(pr);
        _for(i, , n)
        {
            int a, b;
            P p;
            cin >> a >> b;
            p.x = a, p.y = L.y;
            pr.second = p;
            p.x = b, p.y = R.y;
            pr.first = p;
            line.push_back(pr);
        }
        pr.second.x = R.x, pr.second.y = L.y;
        pr.first = R;
        line.push_back(pr);
        _for(i, , m) cin >> p[i].x >> p[i].y;
        _for(i, , m) {
            , r = line.size()-,mid;
            ){
                mid = (l+r)/;
                P _x = line[mid].first,_y = line[mid].second;
                ) r = mid;
                else l = mid;
            }
            res[l] ++;
        }
        _for(i, , n)
            cout << i <<": "<< res[i] <<endl;
        cout << endl;
    }
    ;
}

POJ 2318 TOYS(点与直线的关系 叉积&&二分)的更多相关文章

  1. poj 2318 TOYS 点与矩形的关系

    题目链接 题意 有一个矩形盒子,\(n(n\leq 5e4)\)条线段将其分成了\(n+1\)个区域(每条线段的两个端点分别在矩形的上边和下边,且线段互不相交).现向盒子中扔\(m(m\leq 5e4 ...

  2. POJ 2318 TOYS(叉积+二分)

    题目传送门:POJ 2318 TOYS Description Calculate the number of toys that land in each bin of a partitioned ...

  3. 简单几何(点与线段的位置) POJ 2318 TOYS && POJ 2398 Toy Storage

    题目传送门 题意:POJ 2318 有一个长方形,用线段划分若干区域,给若干个点,问每个区域点的分布情况 分析:点和线段的位置判断可以用叉积判断.给的线段是排好序的,但是点是无序的,所以可以用二分优化 ...

  4. poj 2318 TOYS (二分+叉积)

    http://poj.org/problem?id=2318 TOYS Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 101 ...

  5. 向量的叉积 POJ 2318 TOYS & POJ 2398 Toy Storage

    POJ 2318: 题目大意:给定一个盒子的左上角和右下角坐标,然后给n条线,可以将盒子分成n+1个部分,再给m个点,问每个区域内有多少各点 这个题用到关键的一步就是向量的叉积,假设一个点m在 由ab ...

  6. POJ 1269 Intersecting Lines (判断直线位置关系)

    题目链接:POJ 1269 Problem Description We all know that a pair of distinct points on a plane defines a li ...

  7. POJ 2318 TOYS && POJ 2398 Toy Storage(几何)

    2318 TOYS 2398 Toy Storage 题意 : 给你n块板的坐标,m个玩具的具体坐标,2318中板是有序的,而2398无序需要自己排序,2318要求输出的是每个区间内的玩具数,而231 ...

  8. poj 2318 TOYS &amp; poj 2398 Toy Storage (叉积)

    链接:poj 2318 题意:有一个矩形盒子,盒子里有一些木块线段.而且这些线段坐标是依照顺序给出的. 有n条线段,把盒子分层了n+1个区域,然后有m个玩具.这m个玩具的坐标是已知的,问最后每一个区域 ...

  9. POJ 2318 /// 判断点与直线的位置关系

    题目大意: n块玩具箱隔板 m个玩具落地点 给定玩具箱的左上和右下两个端点 接下来给定n块隔板的上点的x和下点的x(因为y就是玩具箱的上下边缘) 接下来给定m个玩具落地点 输出n+1个区域各有的玩具数 ...

随机推荐

  1. Python学习笔记(Django篇)——3、创建第一个数据库模型

    Django里面集成了SQLite的数据库,对于初期研究来说,可以用这个学习.   第一步,创建数据库就涉及到建表等一系列的工作,在此之前,要先在cmd执行一个命令: python manage.py ...

  2. sql 建表以及查询---复杂查询之成绩排名

    废话不说,直接建表 1.表Player USE T4st -- 设置当前数据库为T4st,以便访问sysobjects IF EXISTS(SELECT * FROM sysobjects WHERE ...

  3. java web中resources路径

    UserBean.class.getClassLoader().getResource(filePath).getPath() 或者 Thread.currentThread().getContext ...

  4. android抽屉导航的设计准则

    我阅读了google官方的关于抽屉导航的设计准则,这可以给我带来什么帮助?最起码,我可以知道,抽屉导航适用在什么场景中,使用它时要注意什么事项.App的设计是有规则可以依据的,比如,使用抽屉导航时,是 ...

  5. loj6102 「2017 山东二轮集训 Day1」第三题

    传送门:https://loj.ac/problem/6102 [题解] 贴一份zyz在知乎的回答吧 https://www.zhihu.com/question/61218881 其实是经典问题 # ...

  6. 【BZOJ】1419 Red is good

    [算法]期望DP [题解]其实把状态表示出来就是很简单的期望DP. f[i][j]表示i张红牌,j张黑牌的期望. i=0时,f[0][j]=0. j=0时,f[i][0]=i. f[i][j]=max ...

  7. JS之window对象

    window对象 window属性: opener:打开当前窗口的源窗口,如果这个窗口是由别的网页点击链接跳转过来的,或者是从另外一个页面点击打开窗口打开的,opener就是找到源页面的.如果当前窗口 ...

  8. 结合promise对原生fetch的两个then用法理解

    前言:该问题是由于看到fetch的then方法的使用,产生的疑问,在深入了解并记录对promise的个人理解 首先看一下fetch请求使用案例: 案例效果:点击页面按钮,请求当前目录下的arr.txt ...

  9. hdu 1016 Prime Ring Problem (素数环)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1016 题目大意:输入一个n,环从一开始到n,相邻两个数相加为素数. #include <iost ...

  10. 线程,JSP,Servlet面试题

    线程编程方面 60.java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runna ...