题目

题目背景

在 Nescafe27 和 28 中,讲述了一支探险队前往 Nescafe 之塔探险的故事……

当两位探险队员以最快的时间把礼物放到每个木箱里之后,精灵们变身为一缕缕金带似的光,簇簇光芒使探险队员们睁不开眼睛。待一切平静下来之后,探险队员来到了一座宫殿 中,玉制的石椅上坐着两个人……

“你们就是……Nescafe 之塔护法中的两位?”

“是的,我们就是神刀护法 xlk 和飞箭护法 riatre……你们来这里做什么?”

“我们是前来拜访圣主和四位护法的……”

“如果你们想见圣主和其它两位护法,你们必须穿过前方的七色彩虹。请随我来吧……”

题目描述

探险队员们跟随两位护法来到了七色虹前。七色虹,就是平面直角坐标系中赤橙黄绿青 蓝紫七个半圆,第 i 座(1<=i<=7)半圆形彩虹的圆心是(xi,0),半径是 ri,半圆上所有点的纵坐 标均为非负数。探险队员可以看做一条竖直的、长度等于身高的线段,线段的底端纵坐标为 0,最高的一位探险队员的身高为 h。

现在探险队员们要从(0,0)穿越七色虹到达(x0,0),穿越七色虹的过程中,探险队员的整 个身体必须始终在至少一个半圆形彩虹的内部。由于彩虹的半径 ri 可能太小了,不足以满 足这个条件,因此两位护法决定帮助他们把所有彩虹的半径都增大一个非负实数 r。探险队 员们想知道,r 最小是多少呢?

输入格式

第一行两个实数 h、x0,表示身高和目的地横坐标。

接下来七行每行两个实数 xi、ri,表示七座半圆形彩虹的圆心和半径。

输出格式

输出最小的 r,四舍五入保留 2 位小数。

样例输入

4.0 36.0

0.0 4.0

6.0 4.0

12.0 4.0

18.0 4.0

24.0 4.0

30.0 4.0

36.0 4.0

样例输出

1.00

数据范围及约定

对于 100% 的数据,满足 0<=xi,x0<=10000,0<h<100。

穿越七彩虹

二分,没什么好说的。

代码

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath> using namespace std; #define EPS 1e-10 double h, x0; struct Node {
double x, r;
}c[]; struct Segment {
double l, r;
}seg[]; bool cmp(const Segment &a, const Segment &b) {
return a.l < b.l;
} int check(double R)
{
int segcnt = ;
for(int i = ; i <= ; ++i)
{
double delt = * ((c[i].r + R) * (c[i].r + R) - h * h); if(delt < )continue;
double x1 = ( * c[i].x - sqrt(delt)) / ;
double x2 = ( * c[i].x + sqrt(delt)) / ;
seg[++segcnt] = (Segment){x1, x2};
}
sort(seg + , seg + + segcnt, cmp);
double r = ;
for(int i = ; i <= segcnt && r < x0; ++i)
{
if(seg[i].l > r)
break;
else
r = max(r, seg[i].r);
}
if(r < x0)
return ;
else
return ;
} int main() {
freopen("rainbow.in", "r", stdin);
freopen("rainbow.out", "w", stdout); scanf("%lf%lf", &h, &x0); for(int i = ; i <= ; ++i)
scanf("%lf%lf", &c[i].x, &c[i].r); double l = 0.0, r = 10000.0, mid;
while(r - l >= EPS) {
mid = (l + r) / ;
if(check(mid))
r = mid;
else
l = mid;
} printf("%.2lf\n", mid); fclose(stdin);
fclose(stdout); return ;
}

2018.11.7 Nescafe29 T1 穿越七色虹的更多相关文章

  1. -cogs1247. [Nescafé29] 穿越七色虹

    1247. [Nescafé29] 穿越七色虹 ★   输入文件:rainbow.in   输出文件:rainbow.out   简单对比时间限制:5 s   内存限制:128 MB [背景] 在Ne ...

  2. 2018.11.3 Nescafe18 T1 七夕祭

    题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是 TYVJ 今年举办了一次线下七夕祭.Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ七夕祭游玩. ...

  3. 2018.11.5 Nescafe26 T1 小猫爬山

    题目 题目描述 Freda 和 rainbow 饲养了 N 只小猫,这天,小猫们要去爬山.经历了千辛万苦,小猫们 终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<). Fre ...

  4. [ZigBee] 13、ZigBee基础阶段性回顾与加深理解——用定时器1产生PWM来控制LED亮度(七色灯)

    引言:PWM对于很多软件工程师可能又熟悉又陌生,以PWM调节LED亮度为例,其本质是在每个周期都偷工减料一些,整体表现出LED欠压亮度不同的效果.像大家看到的七色彩灯其原理也类似,只是用3路PWM分别 ...

  5. OI生涯回忆录 2018.11.12~2019.4.15

    上一篇:OI生涯回忆录 2017.9.10~2018.11.11 一次逆风而行的成功,是什么都无法代替的 ………… 历经艰难 我还在走着 一 NOIP之后,全机房开始了省选知识的自学. 动态DP,LC ...

  6. China Intelligent Office Summit(2018.11.21)

    时间:2018.11.21地点:中关村软件园国际会议中心

  7. International Programming Retreat Day(2018.11.17)

    时间:2018.11.17地点:北京国华投资大厦

  8. Intel Artificial Intelligence Conference(2018.11.14)

    时间:2018.11.14地点:北京国贸大酒店

  9. 2018.11.23 浪在ACM 集训队第六次测试赛

    2018.11.23 浪在ACM 集训队第六次测试赛 整理人:刘文胜 div 2: A: Jam的计数法 参考博客:[1] 万众 B:数列 参考博客: [1] C:摆花 参考博客: [1] D:文化之 ...

随机推荐

  1. Phpstorm Git 操作

    一.前提: 1.下载并安装好 Phpstorm 2.下载并安装好 Git 3.熟悉 Git 相关命令行操作 二.Git pull & commit(add): 下面简单说一下相关操作: Php ...

  2. C++之struct

    C++的struct对C做和很多补充,里面可以放函数(构造函数和虚函数),也可以同struct和class的继承,在C++中也完全可以替代class.他们之间的主要区别: 1 calss默认是私有继承 ...

  3. 交换函数swap的三种实现方法

    http://blog.csdn.net/GarfieldEr007/article/details/48314295 本文采用三种方式实现两个数之间的交换,分别是①借助辅助变量temp的swap函数 ...

  4. 在sublime text3下,用快捷键把文件打开到浏览器中

    使用背景 在编辑html或者js文件的时候,是否想在浏览器中预览一下, 你的步骤可能是这样的: 找到编辑文件的位置, 右键使用某一浏览器打开.如果是这样,你就out了, 因为在sublime中有更加简 ...

  5. Ubuntu 14.04上安装Riak

    一.安装riak   1. 安装包:riak_2.0.2-1_amd64.deb    路    径:~/software/riak_2.0.2-1_amd64.deb 2. 安装riak     $ ...

  6. C 碎片六 函数

    一.程序编译执行过程 程序的编译执行过程分为4个阶段:预处理阶段.编译阶段.汇编阶段.连接阶段 1. 预处理阶段:预处理器(cpp)处理以头文件.宏.条件编译(字符#开头)等内容的替换.此阶段不进行语 ...

  7. subline 安装 package control 连接服务器失败,解决办法

    解决办法: 打开C:\Windows\system32\drivers\etc\hosts文件 增加 50.116.34.243 sublime.wbond.net50.116.34.243 pack ...

  8. SSM整合笔记

    SSM整合笔记 1,创建maven项目 创建maven项目过程省略 ps:如果创建完maven项目之后项目报错,可能是没有配置Tomcat 2,在pom.xml里面导入相应的jar的依赖 <pr ...

  9. 从零开始的全栈工程师——js篇2.16

    js操作css样式 div.style.width=“200px” 在div标签内我们添加了一个style属性 并设定了width值 这种写法会给标签带来了大量的style属性 跟实际项目是不符的 我 ...

  10. html5标签的兼容性处理

    HTML5的语义化标签以及属性 1.可以让开发者非常方便地实现清晰的web页面布局,加上CSS3的效果渲染,快速建立丰富灵活的web页面显得非常简单 2.使用他们能让代码语义化更直观,而且更方便SEO ...