`
lgh1992314
  • 浏览: 315592 次
文章分类
社区版块
存档分类
最新评论

zoj_3203Light Bulb

 
阅读更多

Light Bulb http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3203


Time Limit:1 Second Memory Limit:32768 KB

Compared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow and he has only one light bulb in his house. Every night, he is wandering in his incommodious house, thinking of how to earn more money. One day, he found that the length of his shadow was changing from time to time while walking between the light bulb and the wall of his house. A sudden thought ran through his mind and he wanted to know the maximum length of his shadow.

Input

The first line of the input contains an integerT(T<= 100), indicating the number of cases.

Each test case contains three real numbersH,handDin one line.His the height of the light bulb whilehis the height of mildleopard.Dis distance between the light bulb and the wall. All numbers are in range from 10-2to 103, both inclusive, andH-h>= 10-2.

Output

For each test case, output the maximum length of mildleopard's shadow in one line, accurate up to three decimal places..

Sample Input

3
2 1 0.5
2 0.5 3
4 3 4

Sample Output

1.000
0.750
4.000


如图,人左右走动,求影子L的最长长度。
根据图,很容易发现当灯,人的头部和墙角成一条直线时(假设此时人站在A点),此时的长度是影子全在地上的最长长度。当人再向右走时,影子开始投影到墙上,当人贴着墙,影子长度即为人的高度。所以当人从A点走到墙,函数是先递增再递减,为凸性函数,所以我们可以用三分法来求解。

#include <iostream>
#include <cstdio>
using namespace std;

double D,H,h;
const double EPS = 1e-10;

double Cal(double L)
{
	return D * (h - L) / (H - L) + L;
}

double Solve(void)
{
	double Left, Right;
	double mid, midmid;
	double mid_value, midmid_value;
	Left = 0; Right = h;
	while (Left + EPS < Right)
	{
		mid = (Left + Right) / 2;
		midmid = (mid + Right) / 2;
		mid_value = Cal(mid);
		midmid_value = Cal(midmid);
		if (mid_value >= midmid_value) Right = midmid;
		else Left = mid;
	}
	return Left;
}

int main()
{
	freopen("in.txt","r",stdin);
	int t;
	cin>>t;
	while(t--)
	{
		cin>>H>>h>>D;
		printf("%.3lf\n",Cal(Solve()));
	}
}


分享到:
评论

相关推荐

    zoj.gz_ ZOJ_ZOJ 1016_max flow_zoj 1045_zoj.rar

    标题中的"ZOJ.gz_ ZOJ_ZOJ 1016_max flow_zoj 1045_zoj.rar" 提到了两个ZOJ(Zhejiang Online Judge)的题目,分别是1016和1045,这两个数字通常代表在线编程竞赛中的题目编号。这些题目通常涉及到算法和数据结构的...

    zoj_ac.rar_zoj_zoj 1023_zoj 2792_zoj21_zoj2182

    最近在acm.zju.edu.cn上通过的题目的代码,都是比较有价值的题目

    zoj.rar_ zoj Deck java_oj_zoj_zoj.rar_在线评测

    【标题】"zoj.rar_ zoj Deck java_oj_zoj_zoj.rar_在线评测" 提供的是 ZoJ(Zhejiang Online Judge)在线评测系统的源代码,这是一个用于编程竞赛和教育训练的在线判题平台。"Deck"可能指的是系统中的组件或功能模块...

    zoj_1004.cpp BFS版本

    zoj_1004.cpp 求单词字母进出栈后能形成目标串的进出方案 广度优先搜索求解

    ZOJ.zip_Jugs A_ZOJ NTA_zoj acm_zoj acm 1216_zoj code

    【ZOJ.zip】是一个压缩包,里面包含了与ZOJ(Zhejiang Online Judge)相关的ACM(International Collegiate Programming Contest)题解。ZOJ是一个在线编程竞赛平台,它为参赛者提供了一系列算法题目进行练习,以...

    zoj.rar_zoj_zoj4041

    《ZOJ 4041问题的正确解法与程序分析》 ZOJ(Zhejiang Online Judge)是一个知名的在线编程竞赛平台,其中的题目编号为4041的题目吸引了众多程序员的关注。本篇文章将深入探讨ZOJ 4041的正确解法,并对提供的源代码...

    acm.tar.gz_zoj_zoj题解_题目分类

    《浙江大学ZOJ源码题解:题目类型与难易度分类》 浙江大学ZOJ(Zhejiang University Online Judge)是一个著名的在线编程竞赛平台,为广大学习计算机科学和技术的同学们提供了丰富的编程题目和实践机会。这个名为...

    zoj 1002_zoj1002_

    【标题】"ZOJ 1002" 是一个在线编程竞赛题目,源自ZOJ(Zhejiang Online Judge),这是一个面向ACM/ICPC(国际大学生程序设计竞赛)的在线评测系统。题目编号1002,通常表示该题是ZOJ平台上的一个问题,可能涉及算法...

    ZOJ1014.zip_zoj code_zoj1004

    标题“ZOJ1014.zip_zoj code_zoj1004”表明这是一个与ZOJ(ZeroJudge)在线判题系统相关的代码压缩包,其中可能包含了解决ZOJ问题1004的源代码。ZOJ是面向编程爱好者和学生的一个在线编程竞赛平台,它提供了各种算法...

    ZOJ1055-Oh_Those_Achin_Feet.rar_BFS最短路径_ZOJ1055_bfs求最短路径_zoj

    标题中的"ZOJ1055-Oh_Those_Achin_Feet.rar"是指ZOJ(Zhejiang Online Judge)平台上的一道编程题目,编号为1055,题目名为"Oh, Those Achin Feet"。这是一道与图论相关的算法问题,主要涉及的是BFS(Breadth First ...

    zoj1002_1091_1789代码

    能AC 通过的c++代码,包括zoj1002,1091,1789

    zoj1383_zoj1383_

    标题“zoj1383_zoj1383_”和描述中的“一个非常非常非常非常实用的zoj结题代码”暗示我们这可能是一个关于ZOJ(在线判题系统Zhejiang Online Judge)的编程挑战解决方案。ZOJ是一个为编程爱好者提供在线编程练习和...

    zoj.zip_zoj

    【标题】"zoj.zip_zoj"所对应的资源是一个与ZOJ(Zhejiang Online Judge)相关的代码集合。ZOJ是浙江大学主办的一个在线编程竞赛平台,它提供了多种算法题目供用户练习和提交代码进行评测。这个压缩包很可能包含了在...

    ZOJ4.16.rar_zoj

    ZOJ4.16.rar_zoj 是一个与ZOJ(Zhejiang Online Judge)相关的压缩文件,这通常意味着它包含了某次程序设计竞赛,特别是2004年4月16日浙江省程序设计竞赛的题目。ZOJ是浙江大学主办的一个在线编程平台,它允许参赛者...

    zoj2536.rar_zoj25

    标题 "zoj2536.rar_zoj25" 暗示这是一份与ZOJ(中国大学在线编程竞赛)第2536号问题相关的提交文件,可能包含了参赛者或教练的代码解决方案。描述中的“这个不是用贪心做的”表明该问题可能涉及到一种非贪心算法的...

    zoj1204.rar_acm 1204_zoj1204

    标题中的"zoj1204.rar_acm 1204_zoj1204"指的是浙江大学在线判题系统ZOJ(Zhejiang University Online Judge)上的第1204题,这是一个针对ACM/ICPC(国际大学生程序设计竞赛)训练的问题。在ACM/ICPC中,参赛者需要...

    zoj3607.rar_zoj贪心

    【标题】"zoj3607.rar_zoj贪心" 涉及的是ZOJ(Zhejiang Online Judge)在线编程竞赛平台上的一个问题,该问题编号为3607,且与贪心算法相关。这通常意味着我们需要解决一个通过贪心策略可以优化的计算问题。贪心算法...

    zoj-cpp.zip_zoj

    【标题】"ZOJ-CPP.zip" 是一个包含ZOJ(在线判题系统ZeroJudge)网站上多个C++编程练习解答的压缩包。这个压缩包的名称表明它专注于C++语言,很可能是一个学习资源,旨在帮助初学者理解和解决动态规划问题。 【描述...

    zoj 源码700题

    【标题】"zoj 源码700题"是指一个包含700多道ZOJ(在线判题系统Zhejiang Online Judge)编程竞赛题目的源代码集合。这个资源对于学习算法、提高编程技能以及准备编程竞赛的学员来说极具价值。 【描述】"包含了zoj...

    zheda.rar_zoj

    浙江大学ZOJ(Zhejiang University Online Judge)是一个在线编程题解平台,专为计算机科学和技术领域的学生、教师以及编程爱好者提供。它包含了丰富的算法题目,是提升编程技能和算法理解的重要资源。"zheda.rar_...

Global site tag (gtag.js) - Google Analytics