原题

给出一个矩形玩具箱和其中隔板的位置,求每个玩具在第几个隔间内(保证没有在线上的玩具)


将玩具按x轴排序,记录当前隔板的编号,每次判断是否需要右移(左移)隔板(因为是有序的,所以移动次数左右不厚超过1),(即判断在该隔板的左或右边,)这样就可以解决了!

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cstring>
  4. #define N 5050
  5. using namespace std;
  6. int n,m,ans[N];
  7. int Read()
  8. {
  9. int ans=0,fu=1;
  10. char j=getchar();
  11. for (;j<'0' || j>'9';j=getchar()) if (j=='-') fu=-1;
  12. for (;j>='0' && j<='9';j=getchar()) ans*=10,ans+=j-'0';
  13. return ans*fu;
  14. }
  15. struct point
  16. {
  17. int x,y;
  18. point() {}
  19. point(int _x,int _y) : x(_x),y(_y) {}
  20. bool operator == (const point &b) const
  21. {
  22. return x==b.x && y==b.y;
  23. }
  24. bool operator < (const point &b) const
  25. {
  26. if (x==b.x) return y<b.y;
  27. return x<b.x;
  28. }
  29. point operator - (const point &b) const
  30. {
  31. return point(b.x-x,b.y-y);
  32. }
  33. double operator * (const point &b) const
  34. {
  35. return x*b.y-b.x*y;
  36. }
  37. void read()
  38. {
  39. x=Read();
  40. y=Read();
  41. }
  42. }s,t,f[N];
  43. struct edge
  44. {
  45. point a,b;
  46. bool operator < (const edge &t) const
  47. {
  48. if (a==t.a) return b<t.b;
  49. return a<t.a;
  50. }
  51. }q[N];
  52. void slove()
  53. {
  54. int now=0;
  55. for (int i=1;i<=m;i++)
  56. {
  57. while ((q[now+1].b-f[i])*(q[now+1].a-f[i])<0 && now<n) now++;
  58. while ((q[now].b-f[i])*(q[now].a-f[i])>0 && now) now--;
  59. ans[now]++;
  60. }
  61. }
  62. int main()
  63. {
  64. while (~scanf("%d",&n) && n)
  65. {
  66. memset(ans,0,sizeof(ans));
  67. m=Read();
  68. s.read();
  69. t.read();
  70. q[0].a=s;
  71. q[0].b.x=s.x;
  72. q[0].b.y=t.y;
  73. for (int i=1;i<=n;i++)
  74. q[i].a.x=Read(),q[i].a.y=s.y,q[i].b.x=Read(),q[i].b.y=t.y;
  75. for (int i=1;i<=m;i++)
  76. f[i].read();
  77. sort(q+1,q+n+1);
  78. sort(f+1,f+m+1);
  79. slove();
  80. for (int i=0;i<=n;i++)
  81. printf("%d: %d\n",i,ans[i]);
  82. putchar('\n');
  83. }
  84. return 0;
  85. }

[poj] 2318 TOYS || 判断点在多边形内的更多相关文章

  1. POJ 2318 TOYS | 二分+判断点在多边形内

    题意: 给一个矩形的区域(左上角为(x1,y1) 右下角为(x2,y2)),给出n对(u,v)表示(u,y1) 和 (v,y2)构成线段将矩形切割 这样构成了n+1个多边形,再给出m个点,问每个多边形 ...

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

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

  3. zoj 1081 判断点在多边形内

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=81Points Within Time Limit: 2 Second ...

  4. 判断点在多边形内算法的C++实现

    目录 1. 算法思路 2. 具体实现 3. 改进空间 1. 算法思路 判断平面内点是否在多边形内有多种算法,其中射线法是其中比较好理解的一种,而且能够支持凹多边形的情况.该算法的思路很简单,就是从目标 ...

  5. hdu 1756:Cupid's Arrow(计算几何,判断点在多边形内)

    Cupid's Arrow Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  6. php之判断点在多边形内的api

    1.判断点在多边形内的数学思想:以那个点为顶点,作任意单向射线,如果它与多边形交点个数为奇数个,那么那个点在多边形内,相关公式: <?php class AreaApi{ //$area是一个多 ...

  7. ZOJ 1081 Points Within | 判断点在多边形内

    题目: 给个n个点的多边形,n个点按顺序给出,给个点m,判断m在不在多边形内部 题解: 网上有两种方法,这里写一种:射线法 大体的思想是:以这个点为端点,做一条平行与x轴的射线(代码中射线指向x轴正方 ...

  8. R树判断点在多边形内-Java版本

    1.什么是RTree 待补充 2.RTree java依赖 rtree的java开源版本在GitHub上:https://github.com/davidmoten/rtree 上面有详细的使用说明 ...

  9. A Round Peg in a Ground Hole - POJ 1584 (判断凸多边形&判断点在多边形内&判断圆在多边形内)

    题目大意:首先给一个圆的半径和圆心,然后给一个多边形的所有点(多边形按照顺时针或者逆时针给的),求,这个多边形是否是凸多边形,如果是凸多边形在判断这个圆是否在这个凸多边形内.   分析:判断凸多边形可 ...

随机推荐

  1. Excel文档数据转成Plist文件

    有时候我们需要导入大量数据到App中静态数据,但数据又是存在Excel中,怎么办? 第一,复制数据粘贴到一个.txt文本文档中 第二,就是撸代码了 比如,我需要导入的数据表有2列字段,name和bar ...

  2. mac上配置java jdk环境

    访问Oracle官网 http://www.oracle.com,浏览到首页的底部菜单 ,然后按下图提示操作: 2.点击“JDK DOWNLOAD”按钮: 3.选择“Accept Lisence Ag ...

  3. 【Ecshop】商品数据采集扩展

    一个自用的Ecshop商品数据采集程序 ->到此下载

  4. html ajax请求 php 下拉 加载更多数据 (也可点击按钮加载更多)

    <input type="hidden" class="total_num" id="total" value="{$tot ...

  5. linux上面安装svn步骤

    一.安装 使用yum,非常简单 yum install subversion 二.配置 2.1.创建仓库 我们这里在/home下建立一个名为svn的仓库(repository),以后所有代码都放在这个 ...

  6. 【转载】java 客户端链接不上redis解决方案 (jedis)

    本文出自:http://blog.csdn.net/lulidaitian/article/details/51946169 出现问题描述: 1.Could not get a resource fr ...

  7. 学习Pytbon第十八篇,异常处理

    什么是异常? 异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行. 一般情况下,在Python无法正常处理程序时就会发生一个异常. 异常是Python对象,表示一个错误. 当Pyth ...

  8. 学习python第十二天,函数4 生成器generator和迭代器Iterator

    在Python中,这种一边循环一边计算的机制,称为生成器:generator 要创建一个generator,有很多种方法.第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个genera ...

  9. Django+vue在腾讯云上搭建前后端分离项目

    最近打算用Django+vue搭建一个个人主站,在此记录一下搭建项目的整个过程. 一 开发环境: 腾讯云Centos     7 Python                3.7 Django    ...

  10. POJ 2084 Catalan

    Game of Connections Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 8772   Accepted: 43 ...