Toy Storage POJ 2398
题目大意:和 TOY题意一样,但是需要对隔板从左到右进行排序,要求输出的是升序排列的含有i个玩具的方格数,以及i值。
题目思路:判断叉积,二分遍历
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
#include<queue>
#include<math.h>
#include<map>
#define INF 0x3f3f3f3f
#define MAX 100005
#define Temp 1000000000
#define MOD 1000000007 using namespace std; struct node1
{
int ans;//ans记录方格内玩具数
}a[MAX]; struct node2
{
int up,down;//up为上方x坐标,down为下方x坐标
}b[MAX]; int x[MAX],y[MAX],n,m,X1,Y1,X2,Y2,num[MAX];//num记录内有i个玩具的方格数 int cmp(struct node2 A,struct node2 B)
{
if(A.up!=B.up)
return A.up < B.up;
return A.down < B.down;
} void Init()
{
for(int i=;i<=n;i++)
{
a[i].ans=;
}
memset(num,,sizeof(num));
} int check(int pos,int x1,int y1)//叉积
{
int x3=b[pos].up,x2=b[pos].down,y2=Y1,y3=Y2;
return (x1-x3)*(y3-y2)-(x3-x2)*(y1-y3);
} void Find(int pos)//二分查找隔板
{
int x1=x[pos],y1=y[pos],L=,R=n-;
while(L < R)
{
int Mid=(L+R)/;
if(check(Mid,x1,y1) < )
L=Mid+;
else
R=Mid;
}
if(check(L,x1,y1)>)
a[L].ans++;
else
a[L+].ans++;
} int main()
{
int maxn;
while(scanf("%d",&n),n)
{
Init();
maxn=;
scanf("%d%d%d%d%d",&m,&X1,&Y1,&X2,&Y2);
for(int i=;i<n;i++)
scanf("%d%d",&b[i].down,&b[i].up);
sort(b,b+n,cmp);
for(int i=;i<m;i++)
scanf("%d%d",&x[i],&y[i]);
for(int i=;i<m;i++)//二分查找
{
Find(i);
}
printf("Box\n");
for(int i=;i<=n;i++)
{
num[a[i].ans]++;
maxn=max(maxn,num[a[i].ans]);
}
for(int i=;i<=maxn;i++)
if(num[i]!=)
printf("%d: %d\n",i,num[i]);
}
return ;
}
Toy Storage POJ 2398的更多相关文章
- (叉积)B - Toy Storage POJ - 2398
题目链接:https://cn.vjudge.net/contest/276358#problem/B 题目大意:和上一次写叉积的题目一样,就只是线不是按照顺序给的,是乱序的,然后输出的时候是按照有三 ...
- POJ 2398 - Toy Storage 点与直线位置关系
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5439 Accepted: 3234 Descr ...
- poj 2398 Toy Storage(计算几何)
题目传送门:poj 2398 Toy Storage 题目大意:一个长方形的箱子,里面有一些隔板,每一个隔板都可以纵切这个箱子.隔板将这个箱子分成了一些隔间.向其中扔一些玩具,每个玩具有一个坐标,求有 ...
- 简单几何(点与线段的位置) POJ 2318 TOYS && POJ 2398 Toy Storage
题目传送门 题意:POJ 2318 有一个长方形,用线段划分若干区域,给若干个点,问每个区域点的分布情况 分析:点和线段的位置判断可以用叉积判断.给的线段是排好序的,但是点是无序的,所以可以用二分优化 ...
- POJ 2398 Toy Storage(计算几何,叉积判断点和线段的关系)
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3146 Accepted: 1798 Descr ...
- POJ 2318 TOYS && POJ 2398 Toy Storage(几何)
2318 TOYS 2398 Toy Storage 题意 : 给你n块板的坐标,m个玩具的具体坐标,2318中板是有序的,而2398无序需要自己排序,2318要求输出的是每个区间内的玩具数,而231 ...
- poj 2398 Toy Storage(计算几何 点线关系)
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4588 Accepted: 2718 Descr ...
- 向量的叉积 POJ 2318 TOYS & POJ 2398 Toy Storage
POJ 2318: 题目大意:给定一个盒子的左上角和右下角坐标,然后给n条线,可以将盒子分成n+1个部分,再给m个点,问每个区域内有多少各点 这个题用到关键的一步就是向量的叉积,假设一个点m在 由ab ...
- 2018.07.04 POJ 2398 Toy Storage(二分+简单计算几何)
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad have a problem: their ch ...
随机推荐
- PerformSelector 和 NSInvocation
- STL学习:STL库vector、string、set、map用法
本文仅介绍了如何使用它们常用的方法. vector 1.可随机访问,可在尾部插入元素:2.内存自动管理:3.头文件#include <vector> 1.创建vector对象 一维: (1 ...
- 使用freerdp远程连接Windows桌面
之前使用的是rdesktop,但是由于其不支持NLA认证,便不能登录公司的电脑.为此,现在使用freerdp——这是package的名字,实际的可执行程序是xfreerdp.使用如下的命令行即可实现远 ...
- 创建透明CEdit控件
1.在资源编辑器中将Edit控件的Border设为none(当然也可以在代码中修改窗口样式) 2.在重载CEdit的类中响应MSG_OCM_CTLCOLOREDIT消息,在处理函数中将背景模式设为透明 ...
- 【Machine Learning in Action --5】逻辑回归(LogisticRegression)从疝气病预测病马的死亡率
背景:使用Logistic回归来预测患有疝气病的马的存活问题,这里的数据包括368个样本和28个特征,疝气病是描述马胃肠痛的术语,然而,这种病并不一定源自马的胃肠问题,其他问题也可能引发疝气病,该数据 ...
- 获取当前设备的IP地址
头文件: #import <ifaddrs.h> #import <arpa/inet.h> #import <net/if.h> 宏定义: #define IOS ...
- Mac 命令行中进入带有空格的文件夹
http://blog.sina.com.cn/s/blog_5e8392b10100jkvg.html 今天在公司用mac的时候,有个文件夹的名字有空格,怎么都进不去,在网上一查原来不能直接cd 文 ...
- Mybatis批量更新数据
转载:http://blog.csdn.net/tolcf/article/details/39213217 第一种方式 <update id="updateBatch" p ...
- Windows命令查看文件MD5码
D:\>certutil -hashfile md5test.txt MD5 MD5 哈希(文件 md5test.txt): d6 f6 bb 38 b5 6b 67 8f 34 9b e4 d ...
- 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】
在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...