Intervals
Time Limit: 1000MS   Memory Limit: 10000K
Total Submissions: 4292   Accepted: 1288

Description

In the ceiling in the basement of a newly open developers building a light source has been installed. Unfortunately, the material used to cover the floor is very sensitive to light. It turned out that its expected life time is decreasing dramatically. To avoid this, authorities have decided to protect light sensitive areas from strong light by covering them. The solution was not very easy because, as it is common, in the basement there are different pipelines under the ceiling and the authorities want to install the covers just on those parts of the floor that are not shielded from the light by pipes. To cope with the situation, the first decision was to simplify the real situation and, instead of solving the problem in 3D space, to construct a 2D model first.
Within this model, the x-axis has been aligned with the level of the
floor. The light is considered to be a point light source with integer
co-ordinates [bx,by]. The pipes are represented by circles. The center
of the circle i has the integer co-ordinates [cxi,cyi] and an integer
radius ri. As pipes are made from solid material, circles cannot
overlap. Pipes cannot reflect the light and the light cannot go through
the pipes. You have to write a program which will determine the
non-overlapping intervals on the x-axis where there is, due to the
pipes, no light from the light source.

Input

The
input consists of blocks of lines, each of which except the last
describes one situation in the basement. The first line of each block
contains a positive integer number N < 500 expressing the number of
pipes. The second line of the block contains two integers bx and by
separated by one space. Each of the next N lines of the block contains
integers cxi, cyi and ri, where cyi + ri < by. Integers in individual
lines are separated by one space. The last block consists of one line
containing n = 0.

Output

The
output consists of blocks of lines, corresponding to the blocks in the
input(except the last one). One empty line must be put after each block
in the output. Each of the individual lines of the blocks in the output
will contain two real numbers, the endpoints of the interval where there
is no light from the given point light source. The reals are exact to
two decimal places and separated by one space. The intervals are sorted
according to increasing x-coordinate.

Sample Input

6
300 450
70 50 30
120 20 20
270 40 10
250 85 20
220 30 30
380 100 100
1
300 300
300 150 90
1
300 300
390 150 90
0

Sample Output

0.72 78.86
88.50 133.94
181.04 549.93 75.00 525.00 300.00 862.50

aaarticlea/png;base64,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" alt="" width="260" height="163" />大概看这个图就能够解除来了。。

这个题距离不能够取绝对值,因为下面这种情况最左边和最右边都要靠p0.x+一个正数

aaarticlea/png;base64,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" alt="" width="221" height="166" />

接下来排个序再合并区间就OK,

#include <iostream>
#include <cstdio>
#include <cstring>
#include <math.h>
#include <algorithm>
#include <stdlib.h>
using namespace std;
const int N = ;
struct Point {
double x,y,r;
}p[N],p0;
struct Line{
double l,r;
}line[N];
double dis(Point a,Point b){
return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
int cmp(Line a,Line b){
if(a.l<b.l) return ;
return ;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF,n){
scanf("%lf%lf",&p0.x,&p0.y);
double angle1,angle2;
for(int i=;i<n;i++){
scanf("%lf%lf%lf",&p[i].x,&p[i].y,&p[i].r);
double l = dis(p[i],p0); ///p0到圆心的距离
angle1 = asin(p[i].r/l);
double len = (p0.x-p[i].x);///这里千万不能够取绝对值..因为后面的有可能是加
angle2 = asin(len/l);
line[i].l = p0.x - p0.y*tan(angle1+angle2);
line[i].r = p0.x - p0.y*tan(angle2-angle1);
}
sort(line,line+n,cmp);
/*for(int i=0;i<n;i++){
printf("%lf %lf\n",line[i].l,line[i].r);
}*/
double l = line[].l,r = line[].r;
for(int i=;i<n;i++){
if(line[i].l>r){
printf("%.2lf %.2lf\n",l,r);
l = line[i].l;
r = line[i].r;
}
else{
r = max(line[i].r,r);
}
}
printf("%.2lf %.2lf\n\n",l,r);
}
return ;
}
												

poj 1375(解析几何)的更多相关文章

  1. POJ 1375 Intervals | 解析几何

    参考了这个博客 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath&g ...

  2. poj 1375

    一道解析几何么,,, 其实就是求直线与圆的切线. 看到方法有很多,比如根据角度之类的. 这里主要用到了初中的几何知识. 考虑这幅图. 首先可以根据相似三角形知道b的长度,同时圆心与点的方向也知道. 那 ...

  3. POJ 1375 Intervals 光源投影【平面几何】

    <题目链接> <转载于> 题目大意: 给一个光源点s,给一些圆,源点和s相切会形成阴影,求每一段阴影在横轴上的区间. 解题分析: 这道其实不需要点与圆切线的板子来求解,完全可以 ...

  4. [poj] 1375 Interval || 圆的切线&和直线的交点

    原题 每组数据给出一些圆(障碍物)的圆心和半径,一个点和一条线段,求站在这个点,能开到的线段的部分的左端点和右端点.没有则输出"No View" 相当于求过该点的圆的两条切线,切线 ...

  5. [转] POJ计算几何

    转自:http://blog.csdn.net/tyger/article/details/4480029 计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板 ...

  6. ACM计算几何题目推荐

    //第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...

  7. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  8. zoj 1375||poj 1230(贪心)

    Pass-Muraille Time Limit: 2 Seconds      Memory Limit: 65536 KB In modern day magic shows, passing t ...

  9. POJ 题目分类(转载)

    Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...

随机推荐

  1. MVC WebAPI 的基本使用

    1.什么是WebAPI Web API是网络应用程序接口.包含了广泛的功能,网络应用通过API接口,可以实现存储服务.消息服务.计算服务等能力,利用这些能力可以进行开发出强大功能的web应用. 它可以 ...

  2. android studio 首字母提示 设置 大小写敏感

    在使用Android studo 编写程序时, 刚开始,关键字提示 首字母 设置了 大小写敏感,小写字母只能提示小写字母开头的,大写字母只能提示大写字母开始的,比较麻烦,在网上搜了下,解决办法如下: ...

  3. Web安全1&沙箱隔离

    1.web安全 Web安全的本质是信任问题 •由于信任,正常处理用户恶意的输入导致问题的产生 •非预期的输入(就是不是程序员预期的客户的输入) 安全是木桶原理,短的那块板决定的木桶世纪能装多少水,同样 ...

  4. Flask 教程精简版之一(系列片)

    Flask 教程精简版之一(系列片) 现在连教程都有精简版 准备 1.要学会 Flask 之前必须掌握 Python 基本使用. 2.会使用简单的 HTML 效果更加 3.若想练气功必须先自暴自弃 简 ...

  5. python学习_循环结构 and 类型判断

    # 循环结构 ### 循环结构(while) - 格式 ```python while 表达式: 语句块 ``` > 执行流程:当程序执行到while语句时,首先判断表达式的真假.若表达式的值为 ...

  6. [C++] 拓展属性

    inline函数 函数重载 占位参数和默认参数 /*__________________________________________________________________ 背景: C++ ...

  7. Codeforces 1093G题解(线段树维护k维空间最大曼哈顿距离)

    题意是,给出n个k维空间下的点,然后q次操作,每次操作要么修改其中一个点的坐标,要么查询下标为[l,r]区间中所有点中两点的最大曼哈顿距离. 思路:参考blog:https://blog.csdn.n ...

  8. Linux下samba编译与安装(Ubuntu和嵌入式linux)

    Ubuntu[i386-linux下安装过程] 1.安装samba $ sudo apt-get install samba $ sudo apt-get install smbfs (可选) $ s ...

  9. 七、LSP 里氏替换原则

    子类的对象提供了父类的所有行为,且加上子类额外的一些东西(可以是功能,可以是属性).当程序基于父类实现时,如果将子类替换父类而程序不需修改,则说明符合LSP原则. 这个解释看的似懂非懂,再看下面更进一 ...

  10. nyoj 题目61 传纸条

    传纸条(一) 时间限制:2000 ms  |  内存限制:65535 KB 难度:5   描述 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行 ...