POJ 2318 TOYS(点与直线的关系 叉积&&二分)
题目链接
题意:
给定一个矩形,n个线段将矩形分成n+1个区间,m个点,问这些点的分布。
题解:
思路就是叉积加二分,利用叉积判断点与直线的距离,二分搜索区间。
代码:
最近整理了STL的一些模板,发现真是好用啊orz,为啥以前没发现呢,可能是比较懒吧-.-
- #include <stdio.h>
- #include <string.h>
- #include <cmath>
- #include <iostream>
- #include <queue>
- #include <map>
- #include <list>
- #include <utility>
- #include <set>
- #include <algorithm>
- #include <deque>
- #include <vector>
- #define mem(arr,num) memset(arr,0,sizeof(arr))
- #define _for(i, a, b) for(int i = a; i <= b; i++)
- #define __for(i, a, b) for(int i = a; i >=b; i--)
- using namespace std;
- typedef long long ll;
- const ll INF = 0x3f3f3f3f;
- +;
- struct P
- {
- int x,y;
- P() {}
- P(int a, int b)
- {
- x = a, y = b;
- }
- P operator- (P b)
- {
- return P(x-b.x,y-b.y);
- }
- } L,R,p[N];
- pair <P, P> pr;
- vector<pair<P, P> > line;
- double cross(P a, P b) {
- return a.x * b.y - a.y * b.x;
- }
- double judge(P c, P a, P b){
- return cross(c - a,b - a);
- }
- int res[N];
- int main()
- {
- int n, m;
- while(cin >> n, n)
- {
- mem(res,);
- line.clear();
- cin >> m >> L.x >> L.y >> R.x >> R.y;
- pr.second = L;
- pr.first.x = L.x, pr.first.y = R.y;
- line.push_back(pr);
- _for(i, , n)
- {
- int a, b;
- P p;
- cin >> a >> b;
- p.x = a, p.y = L.y;
- pr.second = p;
- p.x = b, p.y = R.y;
- pr.first = p;
- line.push_back(pr);
- }
- pr.second.x = R.x, pr.second.y = L.y;
- pr.first = R;
- line.push_back(pr);
- _for(i, , m) cin >> p[i].x >> p[i].y;
- _for(i, , m) {
- , r = line.size()-,mid;
- ){
- mid = (l+r)/;
- P _x = line[mid].first,_y = line[mid].second;
- ) r = mid;
- else l = mid;
- }
- res[l] ++;
- }
- _for(i, , n)
- cout << i <<": "<< res[i] <<endl;
- cout << endl;
- }
- ;
- }
POJ 2318 TOYS(点与直线的关系 叉积&&二分)的更多相关文章
- poj 2318 TOYS 点与矩形的关系
题目链接 题意 有一个矩形盒子,\(n(n\leq 5e4)\)条线段将其分成了\(n+1\)个区域(每条线段的两个端点分别在矩形的上边和下边,且线段互不相交).现向盒子中扔\(m(m\leq 5e4 ...
- POJ 2318 TOYS(叉积+二分)
题目传送门:POJ 2318 TOYS Description Calculate the number of toys that land in each bin of a partitioned ...
- 简单几何(点与线段的位置) POJ 2318 TOYS && POJ 2398 Toy Storage
题目传送门 题意:POJ 2318 有一个长方形,用线段划分若干区域,给若干个点,问每个区域点的分布情况 分析:点和线段的位置判断可以用叉积判断.给的线段是排好序的,但是点是无序的,所以可以用二分优化 ...
- poj 2318 TOYS (二分+叉积)
http://poj.org/problem?id=2318 TOYS Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 101 ...
- 向量的叉积 POJ 2318 TOYS & POJ 2398 Toy Storage
POJ 2318: 题目大意:给定一个盒子的左上角和右下角坐标,然后给n条线,可以将盒子分成n+1个部分,再给m个点,问每个区域内有多少各点 这个题用到关键的一步就是向量的叉积,假设一个点m在 由ab ...
- POJ 1269 Intersecting Lines (判断直线位置关系)
题目链接:POJ 1269 Problem Description We all know that a pair of distinct points on a plane defines a li ...
- POJ 2318 TOYS && POJ 2398 Toy Storage(几何)
2318 TOYS 2398 Toy Storage 题意 : 给你n块板的坐标,m个玩具的具体坐标,2318中板是有序的,而2398无序需要自己排序,2318要求输出的是每个区间内的玩具数,而231 ...
- poj 2318 TOYS & poj 2398 Toy Storage (叉积)
链接:poj 2318 题意:有一个矩形盒子,盒子里有一些木块线段.而且这些线段坐标是依照顺序给出的. 有n条线段,把盒子分层了n+1个区域,然后有m个玩具.这m个玩具的坐标是已知的,问最后每一个区域 ...
- POJ 2318 /// 判断点与直线的位置关系
题目大意: n块玩具箱隔板 m个玩具落地点 给定玩具箱的左上和右下两个端点 接下来给定n块隔板的上点的x和下点的x(因为y就是玩具箱的上下边缘) 接下来给定m个玩具落地点 输出n+1个区域各有的玩具数 ...
随机推荐
- ACM1004 Let the balloons fly
These code is for the problem "Let the balloons Fly" in ACM 1004 which need deal with stri ...
- PAT (Top Level)1002. Business DP/背包
As the manager of your company, you have to carefully consider, for each project, the time taken to ...
- jquery ajax的知识点
jquery中的ajax方法参数总是记不住,这里记录一下. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(p ...
- 使用Apache Curator监控Zookeeper的Node和Path的状态
1.Zookeeper经常被我们用来做配置管理,配置的管理在分布式应用环境中很常见,例如同一个应用系统需要多台 PC Server 运行,但是它们运行的应用系统的某些配置项是相同的,如果要修改这些相同 ...
- java -classpath or -cp 的设置和解释
classpath is a parameter—set either on the command-line, or through an environment variable—that tel ...
- HihoCoder 重复旋律
あの旋律を何度も繰り返しでも.あの日見た光景を再現できない 无论将那段旋律重复多少次,也无法重现那一日我们看到的景象 もし切ないならば.時をまきもどしてみるかい? 若是感到惆怅的话,要试着让时光倒流吗 ...
- 【BZOJ】1188 [HNOI2007]分裂游戏
[算法]博弈论 [题解] 我们的目的是把游戏拆分成互不影响的子游戏,考虑游戏内的转移. 如果把每堆视为子游戏,游戏之间会相互影响,不成立. 将每堆的一个石子视为子游戏,其产生的石子都在同一个子游戏中. ...
- 【51NOD-0】1011 最大公约数GCD
[算法]欧几里德算法 #include<cstdio> int gcd(int a,int b) {?a:gcd(b,a%b);} int main() { int a,b; scanf( ...
- Hadoop大数据生态系统及常用组件(山东数漫江湖)
经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...
- 【HNOI】 lct tree-dp
[题目描述]给定2-3颗树,每个边的边权为1,解决以下独立的问题. 现在通过连接若干遍使得图为连通图,并且Σdis(x,y)最大,x,y只算一次. 每个点为黑点或者白点,现在需要删除一些边,使得图中的 ...