poj 1375(解析几何)
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 4292 | Accepted: 1288 |
Description
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
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
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(解析几何)的更多相关文章
- POJ 1375 Intervals | 解析几何
参考了这个博客 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath&g ...
- poj 1375
一道解析几何么,,, 其实就是求直线与圆的切线. 看到方法有很多,比如根据角度之类的. 这里主要用到了初中的几何知识. 考虑这幅图. 首先可以根据相似三角形知道b的长度,同时圆心与点的方向也知道. 那 ...
- POJ 1375 Intervals 光源投影【平面几何】
<题目链接> <转载于> 题目大意: 给一个光源点s,给一些圆,源点和s相切会形成阴影,求每一段阴影在横轴上的区间. 解题分析: 这道其实不需要点与圆切线的板子来求解,完全可以 ...
- [poj] 1375 Interval || 圆的切线&和直线的交点
原题 每组数据给出一些圆(障碍物)的圆心和半径,一个点和一条线段,求站在这个点,能开到的线段的部分的左端点和右端点.没有则输出"No View" 相当于求过该点的圆的两条切线,切线 ...
- [转] POJ计算几何
转自:http://blog.csdn.net/tyger/article/details/4480029 计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板 ...
- ACM计算几何题目推荐
//第一期 计算几何题的特点与做题要领: 1.大部分不会很难,少部分题目思路很巧妙 2.做计算几何题目,模板很重要,模板必须高度可靠. 3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面 ...
- CSU训练分类
√√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...
- zoj 1375||poj 1230(贪心)
Pass-Muraille Time Limit: 2 Seconds Memory Limit: 65536 KB In modern day magic shows, passing t ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
随机推荐
- 关于DIV内文字垂直居中的写法
最近在写UI,或多或少用到了CSS,在这记录一下,今天用到的DIV内文字垂直居中的写法, 因为所做的项目都是基于WebKit内核浏览器演示的,所以我们今天采用的是-webkit-box的写法: dis ...
- android 事件传递机制
有三个方法: dispatchTouchEvent onInterceptTouchEvent onTouchEvent 首先:A的dispatchTouchEvent-A的onInterceptTo ...
- svn服务器的配置和使用
安装好了svn服务器,打开 VisualSVN Server Manager 先新建用户和组,在代码库创建的时候可以指定哪些用户或者组有读写权限,也可以创建好后指定 创建用户 输入用户名和密码创建用户 ...
- Java入门 手把手教你配置环境变量
很多人觉得配置Java开发的环境变量很麻烦,很容易忘记,时常被它搞得晕头转向.如果出现这样的情况,那么原因只有一个,你不了解为毛需要配置环境变量,不配置环境变量就不能开发了吗? 答案是:NO!,那么下 ...
- python利用PIL库使图片高斯模糊
一.安装PIL PIL是Python Imaging Library简称,用于处理图片.PIL中已经有图片高斯模糊处理类,但有个bug(目前最新的1.1.7bug还存在),就是模糊半径写死的是2,不能 ...
- 孤荷凌寒自学python第五十五天初识MongoDb数据库
孤荷凌寒自学python第五十五天第一天初识MongoDb数据库 (完整学习过程屏幕记录视频地址在文末) 大家好,2019年新年快乐! 本来我想的是借新年第一天开始,正式尝试学习爬虫,结果今天偶然发现 ...
- Linux & Windows 查看 ip 地址
Windows 查看本机 IP 打开 cmd,输入 ipconfig,回车,找到IPv4地址 或者通过以下方式查看 点击Win10系统的右下角的宽带连接图标,如下图所示. 点击弹出菜单的 ...
- (转\整)UE4游戏优化 多人大地型游戏的优化(三)GPU的优化
施主分享随缘,评论随心,@author:白袍小道 小道暗语: 1.因为小道这里博客目录没自己整,暂时就用随笔目录结构,所以二级目录那啥就忽略了.标题格式大致都是(原or转) 二级目录 (标题) 2.因 ...
- Python编码报错
Python默认编码错误SyntaxError: Non-ASCII character '\xe5'之解决方法在编写Python时,当使用中文输出或注释时运行脚本,会提示错误信息:SyntaxErr ...
- 团队Alpha(八)冲刺
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...