Toy Storage

题型与2318 TOYS一样,注意要对线段排序,现在模板又更新了~~

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<string.h>
  5. #include<algorithm>
  6. #include<map>
  7. #include<queue>
  8. #include<vector>
  9. #include<cmath>
  10. #include<stdlib.h>
  11. #include<time.h>
  12. using namespace std;
  13. #define MS0(a) memset(a,0,sizeof(a))
  14. const int MAXN = ;
  15. struct point{
  16. int x,y;
  17. point(){}
  18. point(int _x,int _y){
  19. x = _x; y = _y;
  20. }
  21. long long operator *(const point &b)const{// 点向量叉乘
  22. return (1LL*x*b.y - 1LL*y*b.x);
  23. }
  24. point operator -(const point &b)const{
  25. return point(x - b.x,y - b.y);
  26. }
  27. long long dot(const point &b){ //点乘
  28. return 1LL*x*b.x + 1LL*y*b.y;
  29. }
  30. double dist(const point &b){
  31. return sqrt(1LL*(x-b.x)*(x-b.x)+1LL*(y-b.y)*(y-b.y));
  32. }
  33. long long dist2(const point &b){
  34. return 1LL*(x-b.x)*(x-b.x)+1LL*(y-b.y)*(y-b.y);
  35. }
  36. double len(){
  37. return sqrt(1LL*x*x+1LL*y*y);
  38. }
  39. double point_to_segment(point b,point c)//点a到“线段” bc的距离
  40. {
  41. point v[];
  42. v[] = {c.x - b.x,c.y - b.y};
  43. v[] = {x - b.x,y - b.y};
  44. v[] = {x - c.x,y - c.y};
  45. if(v[].dot(v[]) < ) return v[].len();
  46. if(v[].dot(v[]) > ) return v[].len();
  47. return fabs(.*(v[]*v[])/v[].len());
  48. }
  49. long long Xmult(point b,point c){ // 当a->b与a->c顺时针转时,返回正;
  50. return (b-*this)*(c-*this);
  51. }
  52. bool operator <(const point &b)const{
  53. return y < b.y||(y == b.y && x < b.x);
  54. }
  55. void input(){
  56. scanf("%d%d",&x,&y);
  57. }
  58. }p[MAXN];
  59.  
  60. struct Line{
  61. point s,t;
  62. Line(){}
  63. Line(point _s,point _t){
  64. s = _s,t =_t;
  65. }
  66. bool operator <(const Line &b)const{
  67. return s < b.s;
  68. }
  69. }line[MAXN];
  70.  
  71. int ans[MAXN],ret[MAXN];
  72. int main()
  73. {
  74. int n,m,i,j,x1,y1,x2,y2,kase = ,U,L;
  75. while(scanf("%d",&n),n){
  76. MS0(ans);
  77. MS0(ret);
  78. scanf("%d%d%d%d%d",&m,&x1,&y1,&x2,&y2);
  79. for(i = ;i <= n;i++){
  80. scanf("%d%d",&U,&L);
  81. line[i] = Line(point(U,y1),point(L,y2));
  82. }
  83. sort(line+,line+n+);
  84. line[] = Line(point(x1,y1),point(x1,y2));
  85. int x,y;
  86. for(i = ;i < m;i++){
  87. scanf("%d%d",&x,&y);
  88. int l = , r = n,tmp;
  89. while(l <= r){
  90. int mid = l + r >> ;
  91. if( point(x,y).Xmult(line[mid].s,line[mid].t) <= ) r = mid-; //在线的上边
  92. else tmp = mid,l = mid+; //线下的点所在的区域才是改line的标号;
  93. }
  94. ret[tmp]++;
  95. }
  96. for(i = ;i <= n;i++){
  97. ans[ret[i]]++;
  98. }
  99. puts("Box");
  100. for(i = ;i <= m;i++)if(ans[i])
  101. printf("%d: %d\n",i,ans[i]);
  102. }
  103. return ;
  104. }

Toy Storage的更多相关文章

  1. POJ 2398 - Toy Storage 点与直线位置关系

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5439   Accepted: 3234 Descr ...

  2. POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3146   Accepted: 1798 Descr ...

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

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

  4. 2018.07.04 POJ 2398 Toy Storage(二分+简单计算几何)

    Toy Storage Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad have a problem: their ch ...

  5. POJ 2398 Toy Storage (叉积判断点和线段的关系)

    题目链接 Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4104   Accepted: 2433 ...

  6. poj 2398 Toy Storage(计算几何)

    题目传送门:poj 2398 Toy Storage 题目大意:一个长方形的箱子,里面有一些隔板,每一个隔板都可以纵切这个箱子.隔板将这个箱子分成了一些隔间.向其中扔一些玩具,每个玩具有一个坐标,求有 ...

  7. poj2398 Toy Storage 计算几何,叉积,二分

    poj2398 Toy Storage 链接 poj 题目大意 这道题的大概意思是先输入6个数字:n,m,x1,y1,x2,y2.n代表卡片的数量,卡片竖直(或倾斜)放置在盒内,可把盒子分为n+1块区 ...

  8. poj 2398 Toy Storage(计算几何 点线关系)

    Toy Storage Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4588   Accepted: 2718 Descr ...

  9. POJ 2398 Toy Storage(计算几何)

    题意:给定一个如上的长方形箱子,中间有n条线段,将其分为n+1个区域,给定m个玩具的坐标,统计每个区域中的玩具个数. 题解:通过斜率判断一个点是否在两条线段之间. /** 通过斜率比较点是否在两线段之 ...

随机推荐

  1. Linux vmstat具体解释(系统IO)

    1. vmstat 能够展现给定时间间隔的server的状态值,包含server的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况 vmstat 2 10 2: 每隔2s 10 : 统计10次 ...

  2. android webview内容压线问题解决方法

    最近在使用webview做页面开发,项目上要求webview在获取到焦点的时候需要有边框线,于是添加上了webview的选中效果,但是出现了网页中的内容压选中框的情况.之后给webview添加padd ...

  3. ioc容器

    对于容器而言需要满足两个方面: 1.全局唯一 2.无论何地都可以进行对容器的访问 对于Spring而言,BeanFactory则就是这样的容器,只不过它过于底层.在我们的日常开发中还是使用Applic ...

  4. 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件

    在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...

  5. UDP包的最大大小是多少?

      每个udp包的最大大小是多少?    65507 约等于 64K 为什么最大是65507?    因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K ...

  6. 动作之CCActionInstant(立即动作)家族

    立即动作就是不需要时间,马上就完成的动作.立即动作的共同基类是CCActionInstant.CCActionInstant的常用子类有: CCCallFunc:回调函数包装器 CCFlipX:X轴翻 ...

  7. 【转】搭建Mac OS X下cocos2d-x的Android开发环境

    http://young40.github.io/blog/2013/02/23/setting-up-android-development-envirment-on-mac-os-x/ http: ...

  8. (转)OpenVPN下载、安装、配置及使用详解

    原文地址:http://www.365mini.com/page/14.htm OpenVPN简介 OpenVPN是一个用于创建虚拟专用网络(Virtual Private Network)加密通道的 ...

  9. photoshop 常用快捷键大全

    一.文件新建 CTRL+N打开 CTRL+O 打开为 ALT+CTRL+O关闭 CTRL+W保存 CTRL+S 另存为 CTRL+SHIFT+S另存为网页格式 CTRL+ALT+S打印设置 CTRL+ ...

  10. zzzzw_在线考试系统①准备篇

    在弄完购物系统之后,小博也了解了解怎么用struts这个框架捣鼓一个在线考试系统 购物系统用的是MVC模式,现在这个struts2原理上也是基于MVC模式的.那么要做这个东西之前先了解一下难点在哪里 ...