题意:同POJ2318

  1. #include<algorithm>
  2. #include<cstdio>
  3. #include<cstdlib>
  4. #include<cstring>
  5. using namespace std;
  6. struct point {
  7. int x, y;
  8. };
  9. struct Node {
  10. point Low, High;
  11. }line[5010];
  12. int Num[5010];
  13. int par[5010];
  14. bool cmp(Node A, Node B) {
  15. return A.High.x < B.High.x;
  16. }
  17. bool is_right(int x, int y, Node ln) {
  18. point P = ln.High;
  19. point Q = ln.Low;
  20. if (((P.x - x)*(Q.y - y) - (P.y - y)*(Q.x - x)) > 0)
  21. return true;
  22. else
  23. return false;
  24. }
  25. void bin_seach(int x, int y, int n) {
  26. int left = 1;
  27. int right = n;
  28. while (left <= right) {
  29. int mid = (left + right) / 2;
  30. if (is_right(x, y, line[mid])) {
  31. left = mid + 1;
  32. }
  33. else {
  34. right = mid - 1;
  35. }
  36. }
  37. par[left]++;
  38. }
  39. int main() {
  40. int n, m, i, j, x1, x2, y1, y2;
  41. while (scanf("%d", &n), n) {
  42. memset(par, 0, sizeof(par));
  43. memset(Num, 0, sizeof(Num));
  44. scanf("%d%d%d%d%d", &m, &x1, &y1, &x2, &y2);
  45. for (int i = 1; i <= n; i++) {
  46. scanf("%d", &line[i].High.x);
  47. line[i].High.y = y1;
  48. scanf("%d", &line[i].Low.x);
  49. line[i].Low.y = y2;
  50. }
  51. sort(line + 1, line + 1 + n, cmp);
  52. int xx, yy;
  53. int t = m;
  54. while (m--) {
  55. scanf("%d%d", &xx, &yy);
  56. bin_seach(xx, yy, n);
  57. }
  58. for (int i = 1; i <= n + 1; i++) {
  59. if (par[i])
  60. Num[par[i]]++;
  61. }
  62. printf("Box\n");
  63. for (int i = 1; i <= t; i++) {
  64. if (Num[i])
  65. printf("%d: %d\n", i, Num[i]);
  66. }
  67. }
  68. return 0;
  69. }

POJ2398【判断点在直线哪一侧+二分查找区间】的更多相关文章

  1. POJ2318【判断点在直线哪一侧+二分查找区间】

    题目大意:给定一个矩形和一些线段,线段将矩形分割为从左至右的若干部分,之后给出一些玩具的坐标,求每个部分中玩具的数量 #include<cstdio> #include<cstdli ...

  2. POJ2318 TOYS(叉积判断点与直线的关系+二分)

    Calculate the number of toys that land in each bin of a partitioned toy box. Mom and dad have a prob ...

  3. javaScript 二分查找

    什么是二分查找的,举个栗子: var arr = [1, 3, 5, 7, 9, 11, 14, 15, 17, 19, 20]; 上面有序数组, 随便给你一位 9 ,输出该数在数组中的索引.   当 ...

  4. Codeforces 475D 题解(二分查找+ST表)

    题面: 传送门:http://codeforces.com/problemset/problem/475/D Given a sequence of integers a1, -, an and q ...

  5. poj2318(叉积判断点在直线左右+二分)

    题目链接:https://vjudge.net/problem/POJ-2318 题意:有n条线将矩形分成n+1块,m个点落在矩形内,求每一块点的个数. 思路: 最近开始肝计算几何,之前的几何题基本处 ...

  6. POJ2318TOYS(叉积判断点与直线位置)

    题目链接 题意:一个矩形被分成了n + 1块,然后给出m个点,求每个点会落在哪一块中,输出每块的点的个数 就是判断 点与直线的位置,点在直线的逆时针方向叉积 < 0,点在直线的顺时针方向叉积 & ...

  7. 判断线段和直线相交 POJ 3304

    // 判断线段和直线相交 POJ 3304 // 思路: // 如果存在一条直线和所有线段相交,那么平移该直线一定可以经过线段上任意两个点,并且和所有线段相交. #include <cstdio ...

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

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

  9. poj 1064 Cable master 判断一个解是否可行 浮点数二分

    poj 1064 Cable master 判断一个解是否可行 浮点数二分 题目链接: http://poj.org/problem?id=1064 思路: 二分答案,floor函数防止四舍五入 代码 ...

随机推荐

  1. IPFS家族(一)

    IPFS这个项目其实很大,并不像大家想象的是一个东西,IPFS是由很多模块组成,每一个模块现在都已经独立成项目了,并且有自己的主页.让我们来简单看一下IPFS家族成员. 协议实验室的主页:https: ...

  2. Java内存区域之程序计数器--《深入理解Java虚拟机》学习笔记及个人理解(一)

    Java虚拟机程序计数器 在书上的P39页 程序计数器干嘛的? 有了它,字节码解释器才可以知道下一条要执行的字节码指令是哪个. 无论是取下一条指令还是分支.循环.跳转.中断.线程恢复,都需要这个程序计 ...

  3. java 三种工厂模式

    一.简单工厂模式 一个栗子: 我喜欢吃面条,抽象一个面条基类,(接口也可以),这是产品的抽象类. public abstract class INoodles { /** * 描述每种面条啥样的 */ ...

  4. 常用到的html页面布局和组件: 自己用

    1. 用div当作圆 <div style="border: 1px solid blue;height: 100px; width: 100px; border-radius: 20 ...

  5. laravel 原生 sql

    1.插入数据 DB::insert('insert into users (id, name, email, password) values (?, ?, ? , ? )',[1, 'Laravel ...

  6. (转)关于 awk 的 pattern(模式)

    本文转自chinaunix http://bbs.chinaunix.net/thread-4246512-1-1.html   作者reyleon 我们知道, awk程序由一系列 pattern 以 ...

  7. ansible之一:安装与配置

    ansible特点: 1.不需要安装客户端,通过sshd去通信 2.基于模块工作,模块可以由任何语言开发 3.不仅支持命令行试用模块,也支持yaml格式得playbook 4.支持sudo 5.有提供 ...

  8. jmeter 前置处理器提取用户cookie信息 比如jsessionid

    一般登录过程分成两步,一步是打开登录页面, 一步是输入用户名和密码登录 现在B/S架构的系统好多时候都只在客户端的cookie信息保留一个jsessionId,然后每次请求的时候在请求的头信息的coo ...

  9. vue-过渡动画

    本篇资料参考于官方文档: http://cn.vuejs.org/guide/transitions.html 概述: Vue 在跳转页面时,提供多种不同方式的动画过渡效果. ●in-out:新元素先 ...

  10. Struts2学习笔记四 OGNL

    OGNL,全称为Object-Graph Navigation Language(对象图表达语言),它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,调用java对象的方法,同时能够自动 ...