题目链接

题意:

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

题解:

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

代码:

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

  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <cmath>
  4. #include <iostream>
  5. #include <queue>
  6. #include <map>
  7. #include <list>
  8. #include <utility>
  9. #include <set>
  10. #include <algorithm>
  11. #include <deque>
  12. #include <vector>
  13. #define mem(arr,num) memset(arr,0,sizeof(arr))
  14. #define _for(i, a, b) for(int i = a; i <= b; i++)
  15. #define __for(i, a, b) for(int i = a; i >=b; i--)
  16. using namespace std;
  17. typedef long long ll;
  18. const ll INF = 0x3f3f3f3f;
  19. +;
  20. struct P
  21. {
  22. int x,y;
  23. P() {}
  24. P(int a, int b)
  25. {
  26. x = a, y = b;
  27. }
  28. P operator- (P b)
  29. {
  30. return P(x-b.x,y-b.y);
  31. }
  32. } L,R,p[N];
  33. pair <P, P> pr;
  34. vector<pair<P, P> > line;
  35. double cross(P a, P b) {
  36. return a.x * b.y - a.y * b.x;
  37. }
  38. double judge(P c, P a, P b){
  39. return cross(c - a,b - a);
  40. }
  41. int res[N];
  42. int main()
  43. {
  44. int n, m;
  45. while(cin >> n, n)
  46. {
  47. mem(res,);
  48. line.clear();
  49. cin >> m >> L.x >> L.y >> R.x >> R.y;
  50. pr.second = L;
  51. pr.first.x = L.x, pr.first.y = R.y;
  52. line.push_back(pr);
  53. _for(i, , n)
  54. {
  55. int a, b;
  56. P p;
  57. cin >> a >> b;
  58. p.x = a, p.y = L.y;
  59. pr.second = p;
  60. p.x = b, p.y = R.y;
  61. pr.first = p;
  62. line.push_back(pr);
  63. }
  64. pr.second.x = R.x, pr.second.y = L.y;
  65. pr.first = R;
  66. line.push_back(pr);
  67. _for(i, , m) cin >> p[i].x >> p[i].y;
  68. _for(i, , m) {
  69. , r = line.size()-,mid;
  70. ){
  71. mid = (l+r)/;
  72. P _x = line[mid].first,_y = line[mid].second;
  73. ) r = mid;
  74. else l = mid;
  75. }
  76. res[l] ++;
  77. }
  78. _for(i, , n)
  79. cout << i <<": "<< res[i] <<endl;
  80. cout << endl;
  81. }
  82. ;
  83. }

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. 深度学习---tensorflow简介

    个core可以有不同的代码路径.对于反向传播算法来说,基本计算就是矩阵向量乘法,对一个向量应用激活函数这样的向量化指令,而不像在传统的代码里会有很多if-else这样的逻辑判断,所以使用GPU加速非常 ...

  2. Bigbluebutton中文乱码问题

    Bigbluebutton中文乱码问题 Libreoffice安装中文 桌面版:在新立得软件包管理器中搜索下面两个文件,之后安装: libreoffice-l10n-zh-cn 和 libreoffi ...

  3. 51Nod 1014 X^2 Mod P

    注意潜在范围 x*x用long long #include <bits/stdc++.h> using namespace std; typedef long long LL; #defi ...

  4. mysql 可视化界面操作指令

    1.让自增长从新开始 ALTER TABLE users auto_increment =1;//让表中的自增长从新从0开始 2.条件查询 SELECT name from  users WHERE ...

  5. opencv在property panel中新建一行

    是用cv2.QT_NEW_BUTTONBAR和button type通过竖线结合可以在创建一行,如下 cv2.createButton("CV_RADIOBOX2", redraw ...

  6. 特征工程(Feature Engineering)

    一.什么是特征工程? "Feature engineering is the process of transforming raw data into features that bett ...

  7. Django 1.10中文文档-第一个应用Part3-视图和模板

    本教程上接Django 1.10中文文档-第一个应用Part2-模型和管理站点.我们将继续开发网页投票这个应用,主要讲如何创建一个对用户开放的界面. 概览 视图是Django应用中的一“类”网页,它通 ...

  8. vue-实现倒计时功能

    JavaScript 创建一个 countdown 方法,用于计算并在控制台打印距目标时间的日.时.分.秒数,每隔一秒递归执行一次. msec 是当前时间距目标时间的毫秒数,由时间戳相减得到,我们将以 ...

  9. 运维开发:python websocket网页实时显示远程服务器日志信息

    功能:用websocket技术,在运维工具的浏览器上实时显示远程服务器上的日志信息 一般我们在运维工具部署环境的时候,需要实时展现部署过程中的信息,或者在浏览器中实时显示程序日志给开发人员看.你还在用 ...

  10. devm_xxx机制

    前言 devm是内核提供的基础机制,用于方便驱动开发者所分配资源的自动回收.参考内核文档devres.txt.总的来说,就是驱动开发者只需要调用这类接口分配期望的资源,不用关心释放问题.这些资源的释放 ...