poj 2318 向量的叉积二分查找
| Time Limit: 2000MS | Memory Limit: 65536K | |
| Total Submissions: 9350 | Accepted: 4451 |
Description
John's parents came up with the following idea. They put cardboard partitions into the box. Even if John keeps throwing his toys into the box, at least toys that get thrown into different bins stay separated. The following diagram shows a top view of an example toy box.
For this problem, you are asked to determine how many toys fall into each partition as John throws them into the toy box.Input
Output
Sample Input
5 6 0 10 60 0
3 1
4 3
6 8
10 10
15 30
1 5
2 1
2 8
5 5
40 10
7 9
4 10 0 10 100 0
20 20
40 40
60 60
80 80
5 10
15 10
25 10
35 10
45 10
55 10
65 10
75 10
85 10
95 10
0
Sample Output
0: 2
1: 1
2: 1
3: 1
4: 0
5: 1 0: 2
1: 2
2: 2
3: 2
4: 2
分析:做题目比看题目容易多了,这JB英文真抽象,判断点在哪一块区域,根据向量的叉积,顺着第一个向量v看,如果w在左边,那么v和w的叉积大于0,否则小于0。
#include <iostream>
#include <cstdio>
#include <vector>
#include <string.h>
using namespace std; struct Point
{
int x,y;
Point(){}
Point(int x,int y):x(x),y(y) {}
}; typedef Point Vector;
Vector operator -(Point A,Point B){return Vector(A.x-B.x,A.y-B.y);}
int Cross(Vector A,Vector B){ return A.x*B.y-A.y*B.x;} struct Line
{
Point A,B;
}; vector<Line> v;
int num[5005]; int BinarySearch(Point P,int L,int R)
{
int mid=(L+R)>>1;
if(R-L==1) mid++;
Vector v1=v[mid].B-v[mid].A,v2=P-v[mid].A,v3;
if(Cross(v1,v2) < 0)
{
v3=v[mid-1].B-v[mid-1].A;
v2=P-v[mid-1].A;
if(Cross(v3,v2) > 0)
return mid-1;
else
return BinarySearch(P,L,mid);
}
else
return BinarySearch(P,mid,R);
} int main()
{
int i,n,m,x1,y1,x2,y2;
Line LL;
Point P;
int flag=0;
while(scanf("%d",&n),n)
{
if(flag) printf("\n");
flag=1;
v.clear();
memset(num,0,sizeof(num));
scanf("%d %d %d %d %d",&m,&x1,&y1,&x2,&y2);
LL.A.x=x1;LL.A.y=y1;LL.B.x=x1;LL.B.y=y2;
v.push_back(LL);
for(i=0;i<n;i++)
{
scanf("%d %d",&LL.A.x,&LL.B.x);
v.push_back(LL);
}
LL.A.x=x2;LL.B.x=x2;
v.push_back(LL);
for(i=0;i<m;i++)
{
scanf("%d %d",&P.x,&P.y);
num[BinarySearch(P,0,n+1)]++;
}
for(i=0;i<=n;i++) printf("%d: %d\n",i,num[i]);
}
return 0;
}
poj 2318 向量的叉积二分查找的更多相关文章
- POJ 2318 TOYS(叉积+二分)
题目传送门:POJ 2318 TOYS Description Calculate the number of toys that land in each bin of a partitioned ...
- POJ 2318 TOYS【叉积+二分】
今天开始学习计算几何,百度了两篇文章,与君共勉! 计算几何入门题推荐 计算几何基础知识 题意:有一个盒子,被n块木板分成n+1个区域,每个木板从左到右出现,并且不交叉. 有m个玩具(可以看成点)放在这 ...
- POJ 1064 Cable master(二分查找+精度)(神坑题)
POJ 1064 Cable master 一开始把 int C(double x) 里面写成了 int C(int x) ,莫名奇妙竟然过了样例,交了以后直接就wa. 后来发现又把二分查找的判断条 ...
- POJ 2318 TOYS 利用叉积判断点在线段的那一侧
题意:给定n(<=5000)条线段,把一个矩阵分成了n+1分了,有m个玩具,放在为位置是(x,y).现在要问第几个位置上有多少个玩具. 思路:叉积,线段p1p2,记玩具为p0,那么如果(p1p2 ...
- POJ 1019:Number Sequence 二分查找
Number Sequence Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 36013 Accepted: 10409 ...
- 【POJ 2318】TOYS 叉积
用叉积判断左右 快速读入写错了卡了3小时hhh #include<cmath> #include<cstdio> #include<cstring> #includ ...
- [ACM] poj 2456 Aggressive cows (二分查找)
Aggressive cows Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5436 Accepted: 2720 D ...
- [ACM] poj 1064 Cable master (二分查找)
Cable master Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21071 Accepted: 4542 Des ...
- POJ 3258 River Hopscotch(二分查找答案)
一个不错的二分,注释在代码里 #include <stdio.h> #include <cstring> #include <algorithm> #include ...
随机推荐
- COGS 2688. 鱼的感恩
★ 输入文件:fool.in 输出文件:fool.out 简单对比时间限制:1 s 内存限制:256 MB [题目描述] 从前有一个渔夫抓到了一条特别的鱼,放走了. 渔夫再次抓到了这条 ...
- openstack 存储节点按照报错Device /dev/sdb not found (or ignored by filtering).
root@dell-PowerEdge-T30:~# pvcreate /dev/sdb Device /dev/sdb not found (or ignored by filtering).首页 ...
- UVA 10735 Euler Circuit (最大流)
题意:求混合图的欧拉路径. 一句话总结:网络流,最主要在于建图,此题是将出度则是和流量联系在了一起,用最大流来调整边的指向. 分析: 这题的困难之处在于无向边只能用一次,相当于一个方向未定的有向边. ...
- UIWebView与JavaScript相互调用
UIWebView与JavaScript的那些事儿 UIWebView是IOS SDK中渲染网面的控件,在显示网页的时候,我们可以hack网页然后显示想显示的内容.其中就要用到javascript的知 ...
- 优先队列的使用——Expedition
一.题目描述 你需要驾驶一辆卡车行驶L单位距离.最开始时,卡车上有P单位的汽油.卡车每开1单位距离需要消耗1单位的汽油.如果在途中车上的汽油耗尽,卡车就无法继续前行,因而无法到达终点.中途共有N个加油 ...
- C#中窗体边框隐藏
设置窗体属性 FormBorderStyle 为 None
- C++ C++ 值传递、指针传递、引用传递详解
这一篇博客写的不错: https://www.cnblogs.com/dingxiaoqiang/p/8012578.html
- UIScreen, UIWindow
模仿书上或网上的例子,每次最开始就是 在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions: ...
- 【离线做法 树状数组】luoguP1972 [SDOI2009]HH的项链
与bzoj3585: mex的线段树做法有着异曲同工之妙 题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含 ...
- 【Java_基础】cmd下使用java命令运行class文件提示“错误:找不到或无法加载主类“的问题分析
1.问题如下 当在命令行使用java命令执行字节码文件时提示“错误:找不到或无法加载主类” 2. 问题分析 这是由于在运行时类的全名应该是包名+类名,例如在包net.xsoftlab.baike下的类 ...