题目链接

题意:

给定一个矩形,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. ACM1004 Let the balloons fly

    These code is for the problem "Let the balloons Fly" in ACM 1004 which need deal with stri ...

  2. PAT (Top Level)1002. Business DP/背包

    As the manager of your company, you have to carefully consider, for each project, the time taken to ...

  3. jquery ajax的知识点

    jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...

  4. 使用Apache Curator监控Zookeeper的Node和Path的状态

    1.Zookeeper经常被我们用来做配置管理,配置的管理在分布式应用环境中很常见,例如同一个应用系统需要多台 PC Server 运行,但是它们运行的应用系统的某些配置项是相同的,如果要修改这些相同 ...

  5. java -classpath or -cp 的设置和解释

    classpath is a parameter—set either on the command-line, or through an environment variable—that tel ...

  6. HihoCoder 重复旋律

    あの旋律を何度も繰り返しでも.あの日見た光景を再現できない 无论将那段旋律重复多少次,也无法重现那一日我们看到的景象 もし切ないならば.時をまきもどしてみるかい? 若是感到惆怅的话,要试着让时光倒流吗 ...

  7. 【BZOJ】1188 [HNOI2007]分裂游戏

    [算法]博弈论 [题解] 我们的目的是把游戏拆分成互不影响的子游戏,考虑游戏内的转移. 如果把每堆视为子游戏,游戏之间会相互影响,不成立. 将每堆的一个石子视为子游戏,其产生的石子都在同一个子游戏中. ...

  8. 【51NOD-0】1011 最大公约数GCD

    [算法]欧几里德算法 #include<cstdio> int gcd(int a,int b) {?a:gcd(b,a%b);} int main() { int a,b; scanf( ...

  9. Hadoop大数据生态系统及常用组件(山东数漫江湖)

    经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...

  10. 【HNOI】 lct tree-dp

    [题目描述]给定2-3颗树,每个边的边权为1,解决以下独立的问题. 现在通过连接若干遍使得图为连通图,并且Σdis(x,y)最大,x,y只算一次. 每个点为黑点或者白点,现在需要删除一些边,使得图中的 ...