题干:

Mom and dad have a problem: their child, Reza, never puts his toys away when he is finished playing with them. They gave Reza a rectangular box to put his toys in. Unfortunately, Reza is rebellious and obeys his parents by simply throwing his toys into the box. All the toys get mixed up, and it is impossible for Reza to find his favorite toys anymore. 
Reza's parents came up with the following idea. They put cardboard partitions into the box. Even if Reza keeps throwing his toys into the box, at least toys that get thrown into different partitions stay separate. The box looks like this from the top:

We want for each positive integer t, such that there exists a partition with t toys, determine how many partitions have t, toys.

Input

The input consists of a number of cases. The first line consists of six integers n, m, x1, y1, x2, y2. The number of cardboards to form the partitions is n (0 < n <= 1000) and the number of toys is given in m (0 < m <= 1000). The coordinates of the upper-left corner and the lower-right corner of the box are (x1, y1) and (x2, y2), respectively. The following n lines each consists of two integers Ui Li, indicating that the ends of the ith cardboard is at the coordinates (Ui, y1) and (Li, y2). You may assume that the cardboards do not intersect with each other. The next m lines each consists of two integers Xi Yi specifying where the ith toy has landed in the box. You may assume that no toy will land on a cardboard.

A line consisting of a single 0 terminates the input.

Output

For each box, first provide a header stating "Box" on a line of its own. After that, there will be one line of output per count (t > 0) of toys in a partition. The value t will be followed by a colon and a space, followed the number of partitions containing t toys. Output will be sorted in ascending order of t for each box.

Sample Input

4 10 0 10 100 0
20 20
80 80
60 60
40 40
5 10
15 10
95 10
25 10
65 10
75 10
35 10
45 10
55 10
85 10
5 6 0 10 60 0
4 3
15 30
3 1
6 8
10 10
2 1
2 8
1 5
5 5
40 10
7 9
0

Sample Output

Box
2: 5
Box
1: 4
2: 1

解题报告:

跟这题一样【POJ - 2318】TOYS,只是输出的格式不一样 。那个题是要输出第i个盒子中有多少玩具,这个是要输出共装有i个玩具的盒子有多少个。

AC代码:

#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
int n,m,x1,x2,y1,y2;//n个板子,m个玩具,左上角,右下角。
int num[2005];
struct Edge {int x1,y1;//上 int x2,y2;//下
} e[5005];
struct Node {int x,y;
} node[5005];
int ans[5005];
int cal(int tar,int line) {return (node[tar].x - e[line].x2)*(e[line].y1-e[line].y2) - (e[line].x1 - e[line].x2)*(node[tar].y - e[line].y2);
}
bool cmp(Edge a,Edge b) {return a.x1 < b.x1;
}
int main()
{while(cin>>n) {memset(num,0,sizeof num);if(n == 0) break;cin>>m>>x1>>y1>>x2>>y2;memset(ans,0,sizeof ans);for(int i = 1; i<=n; i++) {scanf("%d%d",&e[i].x1,&e[i].x2);e[i].y1 = y1;e[i].y2 = y2;}sort(e+1,e+n+1,cmp);for(int i = 1; i<=m; i++) {scanf("%d%d",&node[i].x,&node[i].y);}//process each for(int i = 1; i<=m; i++) {int l = 1,r = n;int mid = (l+r)/2;while(l<r) {mid = (l+r)/2;if(cal(i,mid) > 0) l=mid+1;else r=mid; }if(l == n) {if(cal(i,l) < 0) ans[l]++;else ans[l+1]++;               }else ans[l]++;}for(int i = 1; i<=n+1; i++) {num[ans[i]]++;}puts("Box");for(int i = 1; i<=m; i++) {if(num[i]!=0) printf("%d: %d\n",i,num[i]);}}return 0 ;}

【POJ - 2398】Toy Storage (计算几何,二分找位置,叉积,点和直线的位置关系)相关推荐

  1. poj 2398 Toy Storage (计算几何,判断点和线段关系)

    http://poj.org/problem?id=2398 题意大概是说将一个盒子用n个board分成n+1 部分 然后往里面放toy,给定盒子,board,和toy的坐标 问所有的toy放完后,有 ...

  2. poj 2318 TOYS amp; poj 2398 Toy Storage (叉积)

    链接:poj 2318 题意:有一个矩形盒子,盒子里有一些木块线段.而且这些线段坐标是依照顺序给出的. 有n条线段,把盒子分层了n+1个区域,然后有m个玩具.这m个玩具的坐标是已知的,问最后每一个区域 ...

  3. 计算区域中有t 个点的 区域有多少个+计算几何 + 叉乘+sort+ 二分 + map poj 2398 Toy Storage...

    题目来源:http://poj.org/problem?id=2398 分析: 计算区域中有t 个点的 区域有多少个. #include <cstdlib> #include <cs ...

  4. POJ 2398 Toy Storage

    这道题和POJ 2318几乎是一样的. 区别就是输入中坐标不给排序了,=_=|| 输出变成了,有多少个区域中有t个点. 1 #include <cstdio> 2 #include < ...

  5. 【POJ 3273】 Monthly Expense (二分)

    [POJ 3273] Monthly Expense (二分) 一个农民有块地 他列了个计划表 每天要花多少钱管理 但他想用m个月来管理 就想把这个计划表切割成m个月来完毕 想知道每一个月最少花费多少 ...

  6. POJ 2455Secret Milking Machine(二分+网络流之最大流)

    题目地址:POJ2455 手残真浪费时间啊..又拖到了今天才找出了错误..每晚两道题不知不觉又变回了每晚一道题...sad.. 第一次在isap中忘记调用bfs,第二次则是遍历的时候竟然是从1開始遍历 ...

  7. Android 错误: 找不到符号 符号: 类 x 位置: 类 MainActivity

    错误: 找不到符号 符号: 类 Button 位置: 类 MainActivity 遇到 Error: 错误: 找不到符号 符号: 类x 位置: 类xActivity 先试试 "ALT+EN ...

  8. C和指针之函数之在数组中找特定元素并返回指向该位置的指针

    1.问题 在数组中找特定元素并返回指向该位置的指针 2.代码实现 #include <stdio.h> #include <stdlib.h>//数组中找特定元素并返回指向该位 ...

  9. CF1019D-Large Triangle【计算几何,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1019D 题目大意 给出nnn个点,保证没有三点共线,求是否有三个点围成的三角形面积恰好为SSS. 3≤n≤2× ...

  10. android studio 错误: 找不到符号 符号: 方法 xxx() 位置: 类 xxx

    删除libs下对于的jar文件 使用依赖映入该jar包 如:错误: 找不到符号 符号:   方法 getLayoutPosition() 位置: 类型为NewsAdapter.ViewHolder的变 ...

最新文章

  1. Linux学习-Xshell断开连接程序依然运行
  2. solr索引服务器的配置和solrj集成开发总结
  3. LNMP(nginx php-fpm mysql) 环境部署——mysql
  4. 039_JavaScript对象访问器
  5. unity判断鼠标移动方向_【反向元气骑士】用unity实现俯视角射击是一种怎样的体验...
  6. java 反射 内存_Java内存到反射入门
  7. 高并发锁Lock的详细使用
  8. 火山引擎战略初现,字节跳动打造To B服务双引擎?
  9. csp 201712-1 最小差值
  10. border做三角符号
  11. struts2要点总结
  12. 【转】android开发必看资源URL
  13. 领导干部信息管理系统某省实践案例
  14. linux开发 | DM9000网卡驱动
  15. 【科研】经典演讲“You and Your Research”
  16. 百度大脑推出智能招聘解决方案,助力节省招聘成本
  17. 程序员机械键盘选购总结:键盘选的好,Bug一定少
  18. 读书笔记《大型网站技术架构核心原理与案例》-李智慧
  19. python 求某月的天数
  20. android百度地图定位文字表述,Android studio 百度地图开发(8)地图已标记POI点和搜索POI点的获取和利用...

热门文章

  1. 此处不允许使用分组函数_Excel中使用Vlookup函数实现数据分组
  2. mysql的student是什么意思_复习mysql
  3. java随机产生十个坐标_java中随机坐标
  4. python中sn的意思_python获取内存SN编号等信息
  5. 在 VC6 中使用 GdiPlus-安装
  6. 交叉编译ncurses5.6
  7. Linux Kbuild文档 2
  8. c语言整型数组操作,c语言的数组操作|时刻需
  9. python语言为什么叫python_Python为什么叫Python,Java又如何而来?
  10. python time perf_Python Time 的学习笔记