【问题描述】

小 Q 对计算几何有着浓厚的兴趣。他经常对着平面直角坐标系发呆,思考
一些有趣的问题。今天,他想到了一个十分有意思的题目:
首先,小 Q 会在?轴正半轴和?轴正半轴分别挑选?个点。随后,他将?轴的
点与?轴的点一一连接,形成?条线段,并保证任意两条线段不相交。小 Q 确定
这种连接方式有且仅有一种。最后,小 Q 会给出?个询问。对于每个询问,将会
给定一个点?(? ? ,? ? ),请回答线段 OP 与?条线段会产生多少个交点?
小 Q 找到了正在钻研数据结构的你,希望你可以帮他解决这道难题。

【输入格式】

第1一个正整数?,表示线段的数量;
第2横 第3行包含?个正整数,表示小 Q 在?轴选取的点的纵坐标;
第 4 行包含一个正整数?,表示询问数量;
随后?行,每行包含两个正整数? ? ,? ? ,表示询问中给定的点的横、纵坐标。

【输出格式】

共?行,每行包含一个非负整数,表示你对这条询问给出的答案。

【样例输入】

3
4 5 3
3 5 4
2
1 1
3 3

【样例输出】

0
3

【样例解释】

然后塔里啥都没有,除了钟神。

【数据规模与约定】

50%的数据,1 ≤ ?,?,≤ 2 × 10 3 。
对于100%的数据,1 ≤ ?,? ≤ 2× 10 5 ,坐标范围≤ 10 8 。

思路:

  给你很多很多的横坐标和纵坐标,然后告诉我们这全能够连成线段;

  当时做的时候,一看直接蒙圈,写了个tle自动机就睡觉去了,现在一看原来这么简单;

  因为连成的线段互不相交

  所以这些线段与x轴y轴的交点一定有单调性(自己画个图马上就明白)

  所以先将这些横坐标纵坐标排序

  然后

  跟据已经排好序的x,和下标相同的y来组成线段

  求出线段所在直线的k,b(y==x*k+b);

  接下来就是二分答案;

  二分线段下标

  如果将当前点的坐标带入当前线段直线度的解析式所得的值大于当前点

  则向前二分

  如果小于当前点的话

  则记录答案,向后二分

  最后输出答案

  

  来,上代码:

#include<cstdio>
#include<iostream>
#include<algorithm> using namespace std; struct node {
double k,b;
};
struct node edge[];
double a[],b[];
int n,m; int check(double x,double y)//check才是二分的精髓
{
double cur;
int mid,l=,r=n,ans=;
while(l<=r)
{
mid=(l+r)/;
cur=edge[mid].k*x+edge[mid].b;
if(cur<=y) ans=mid,l=mid+;
else r=mid-;
}
return ans;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++) scanf("%llf",&a[i]);
for(int i=;i<=n;i++) scanf("%llf",&b[i]);
sort(a+,a+n+);
sort(b+,b+n+);
for(int i=;i<=n;i++) edge[i].b=b[i],edge[i].k=-*edge[i].b/a[i];
scanf("%d",&m);
double px,py;
for(double i=;i<=m;i++)
{
scanf("%llf%llf",&px,&py);
printf("%d\n",check(px,py));
}
return ;
}

平面直接坐标系线段相交问题(小Q(钟神)的问题)的更多相关文章

  1. bzoj4814: [Cqoi2017]小Q的草稿

    Description 小Q是个程序员.众所周知,程序员在写程序的时候经常需要草稿纸.小Q现在需要一张草稿纸用来画图,但是桌上 只有一张草稿纸,而且是一张被用过很多次的草稿纸.草稿纸可以看作一个二维平 ...

  2. HDU 1558 Segment set( 判断线段相交 + 并查集 )

    链接:传送门 题意:输入一个数 n 代表有 n 组操作,P 是在平面内加入一条线段,Q x 是查询第 x 条线段所在相交集合的线段个数 例如:下图 5 与 1.2 相交,1 与 3 相交,2 与 4 ...

  3. hdu 1558 线段相交+并查集

    题意:要求相交的线段都要塞进同一个集合里 sol:并查集+判断线段相交即可.n很小所以n^2就可以水过 #include <iostream> #include <cmath> ...

  4. hdu 1558 (线段相交+并查集) Segment set

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1558 题意是在坐标系中,当输入P(注意是大写,我当开始就wa成了小写)的时候输入一条线段的起点坐标和终点坐 ...

  5. POJ 1066 Treasure Hunt (线段相交)

    题意:给你一个100*100的正方形,再给你n条线(墙),保证线段一定在正方形内且端点在正方形边界(外墙),最后给你一个正方形内的点(保证不再墙上) 告诉你墙之间(包括外墙)围成了一些小房间,在小房间 ...

  6. POJ 1556 The Doors【最短路+线段相交】

    思路:暴力判断每个点连成的线段是否被墙挡住,构建图.求最短路. 思路很简单,但是实现比较复杂,模版一定要可靠. #include<stdio.h> #include<string.h ...

  7. 简单几何(线段相交)+模拟 POJ 3449 Geometric Shapes

    题目传送门 题意:给了若干个图形,问每个图形与哪些图形相交 分析:题目说白了就是处理出每个图形的线段,然后判断是否相交.但是读入输出巨恶心,就是个模拟题加上线段相交的判断,我第一次WA不知道输出要按字 ...

  8. 简单几何(直线与线段相交) POJ 1039 Pipe

    题目传送门 题意:一根管道,有光源从入口发射,问光源最远到达的地方. 分析:黑书上的例题,解法是枚举任意的一个上顶点和一个下顶点(优化后),组成直线,如果直线与所有竖直线段有交点,则表示能穿过管道. ...

  9. 简单几何(线段相交) POJ 1410 Intersection

    题目传送门 题意:一个矩形和一条线段,问是否有相交 分析:考虑各种情况.坑点:给出的矩形的两个端点是无序的,还有线段完全在矩形内也算相交 /****************************** ...

随机推荐

  1. html5标签的改变

    1.新的文档类型声明 浏览器解析html模式是有两种模式,按照各自浏览器的定义渲染的页面叫“怪异模式”,而按照w3c组织统一的标准渲染叫“标准模式”.一般都是使用标准模式来保持网页兼容性,区分这两种模 ...

  2. .NET破解之图片下载器

    自去年五月加入吾爱后,学习了三个月,对逆向破解产生了深厚的兴趣,尤其是对.NET方面的分析:但由于这一年,项目比较忙,事情比较多,破解这方面又停滞了许久,不知道还要好久. 前些天,帮忙批量下载QQ相册 ...

  3. Javascript - Arraylike的7种实现

    jQuery的崛起让ArrayLike(类数组)在javascript中大放异彩,它的出现为一组数据的行为(函数)扩展提供了基础. 类数组和数组相似,具有数组的某些行为,但是它相比数组可以更加自由的扩 ...

  4. Map集合概述

    java集合最后一站之Map,给自己的总结画个句号... Map用于保存具有映射关系的数据. 1.HashMap和Hashtable实现类 HashMap和Hashtable都是Map接口的典型实现类 ...

  5. ASP和ASP.NET发送邮件笔记

    这两天因公司网站邮件发不出去,然后研究了在asp网站发送邮件和在asp.net网站发送邮件的代码,把碰到的问题这里记录一下. 1.先说在asp.net中发送邮件吧, 刚开始只有126邮箱可以发出邮件, ...

  6. android am命令以及hotkey文件的编写

    1.拨打电话:am start -a android.intent.action.CALL -d tel:10086 这里-a表示动作,-d表述传入的数据,还有-t表示传入的类型. 2. 打开一个网页 ...

  7. iOS--页面跳转(UITableView)

    本文只要实现运用(UITableView)表格实现页面的传值,同时运用了代理(委托)传值. 目录文件列表如下: AddressBookViewController.h #import <UIKi ...

  8. Android按键事件处理流程 -- KeyEvent

    刚接触Android开发的时候,对touch.key事件的处理总是一知半解,一会是Activity里的方法,一会是各种View 中的,自己始终不清楚到底哪个在先哪个在后,总之对整个处理流程没能很好的把 ...

  9. 测试必备技能系列4:如何用SSH向linux服务器上传下载文件

    通过ssh方式,向远程服务器上传文件 非常方便 直接看老徐之前的文章http://www.51testing.com/?uid-497177-action-viewspace-itemid-37054 ...

  10. 天书笔记:HTML+CSS实现顶部导航栏

    此笔记纯属本人脑残笔记,阅读困难不理解属正常现象,初学者尽量不要阅读,否则轻则口吐白沫重则走火入魔,切记切记 先晒效果图: 效果要求类似于b站的顶部导航(..原谅我老是拿b站做例子:) ) 然后是代码 ...