今天这个**又带着题走来了!!

文章目录

  • @[TOC] 题目
  • 题解
  • 代码实现

题目

相比 wildleopard 的家,他的弟弟 mildleopard 比较穷。他的房子是狭窄的而且在他的房间里面仅有一个灯泡。每天晚上,他徘徊在自己狭小的房子里,思考如何赚更多的钱。有一天,他发现他的影子的长度随着他在灯泡和墙壁之间走到时发生着变化。一个突然的想法出现在脑海里,他想知道他的影子的最大长度。

输入格式
输入文件的第一行包含一个整数 T ,表示测试数据的组数。
对于每组测试数据,仅一行,包含三个实数H ,h 和 D,H 表示灯泡的高度, h表示 mildleopard 的身高, D表示灯泡和墙的水平距离。
输出格式
输出文件共 T 行,每组数据占一行表示影子的最大长度,保留三位小数。

样例
样例输入
3
2 1 0.5
2 0.5 3
4 3 4
样例输出
1.000
0.750
4.000

题解


首先看这种题,明显在一定区间求最值,那么一定是某分,是二分还是三分呢?
我们来想一想,无非影子有两种情况:还有一种是根本跟墙贴着了,这里不再考虑

1)当影子没有被折射到墙上时:当这种情况时H与h之间的距离越远影子越长

2)当有一部分影子被折射到墙上时:当这种情况时,H与h距离越远影子越短,
悄咪咪告诉你还涉及到三角函数,

经过分析后,我们能发现转折点就是影子长刚好要折射到墙上的那一个点
这个函数图像不再是一个一次函数,而是一个抛物线,因而我们确定了这道题属于三分!

好了,三分模板相信大家都会,不会的可以看看我之前写的三分入门博客
三分模板传送门
接着我们就要来计算这个影子长,很明显这道题要用到我们的三角函数兄dei
这个题,由于本仙女接触的三角函数数学题多了,自然就想到了建坐标系,

具体如下:

我们三分的范围也就是[0,D],含义:H与h之间的距离ip

那么以D为x轴,H为y轴,坐标也就出来了:
A(0,H),B(ip,h)

情况1解决:
如果影子木有被折射到墙上,
简单的待定系数求和y=kx+b,求出直线AB解析式,再另y=0,解出x
答案就是x减掉距离ip

情况2解决:如上方图
我们要求的就是GH+HC,
首先按照上面情况一的做法解出x,GH=D-ip,P(x,0)
那么PH=x-D,
接下来要运用的就是tan α,得到CH,
三角函数往往又跟相似挂钩,这里我们就用相似来解决三角函数
△CHP∽△AOP,很容易就得到这个了
那么根据相似比相等的性质,我们可以得出CH/AO = HP/OP
即CH=HP/OP * AO = ( x - D ) / x*H

以上就是写在三分中check函数的东西。话不多说,屁不多放,上马!

代码实现

#include <cstdio>
#define eps 1e-5
int t;
double H, h, D;
double id;double count ( double ip ) {double k = ( h - H ) / ( D - ip );double x = - ( H / k );if ( x > D ) return ip + ( x - D ) / x * H;else return x - D + ip;
}void solve ( double l, double r ) {if ( r - l <= eps ) {id = l;return;}double mid1 = l + ( r - l ) / 3.0;double mid2 = r - ( r - l ) / 3.0;if ( count ( mid1 ) > count ( mid2 ) )solve ( l, mid2 );elsesolve ( mid1, r );
}int main() {scanf ( "%d", &t );while ( t -- ) {scanf ( "%lf %lf %lf", &H, &h, &D );solve ( 0, D );printf ( "%.3lf\n", count ( id ) );}return 0;
}

好了,是不是觉得代码量很少啊,是不是so easy啊!!我也就只讷做出介种题~~
那个**带着神马玩意儿又走了,有事请留言致电139红酒白酒葡萄鸡尾酒~~

[ZOJ 3203] 灯泡相关推荐

  1. ZOJ -3203 三分+数学

    题意: 给出光的高度,人的高度,还有屋子的宽度 本题就是要求人站在什么地方影长最长 输出最长的影长 数学题 可以把这道题的分段公式推出来 然后分类讨论x在不同的范围获得不同的大小 或者把影长公式推出来 ...

  2. #10016. 「一本通 1.2 练习 3」灯泡

    [题目描述] 原题来自:ZOJ 3203 相比 wildleopard 的家,他的弟弟 mildleopard 比较穷.他的房子是狭窄的而且在他的房间里面仅有一个灯泡.每天晚上,他徘徊在自己狭小的房子 ...

  3. 浙江省第6届程序设计竞赛结题报告汇总 zoj3202-3212

    zoj 3202 Second-price Auction 水题,不解释了,直接贴代码 #include<cstdio> #include<cstring> #include& ...

  4. 三分法求解凸函数的最值

    转了牛人的: 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值.但当函数是凸性函数时,二分法就无法适用,这时三分法就可以"大显身手"-- 如图,类似二分的定义Left ...

  5. 和菜鸟一起学算法之三分法求极值问题

    午后的阳光,那么灿烂,如果不是温度过高,那么去西湖看看风景还是不错的.想着,现在西湖边应该是平静的湖面,加上无数知了在柳枝上演奏着交响曲吧.小看了下非诚勿扰,那男生为了女孩唐静付出了7年,唉,可是他错 ...

  6. 【专题】三分法和牛顿迭代法总结

    下面总结两种迭代方法:三分法和牛顿迭代 1.三分法 二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值.但当函数是凸性函数时,二分法就无法适用,这时三分法就可以大显身手. 如下凸函数: 类 ...

  7. 技巧专题1(二分、三分、位运算)

    二分 二分答案一般有以下的一些特征: A. 候选答案在区间[min,max]上按照某种属性有序,一般枚举复杂度较高. B. 容易判断某个点是否为可行 最大值最小. 判断一个东西是否在一个有序集合中出现 ...

  8. ZOJ 2723 Semi-Prime ||ZOJ 2060 Fibonacci Again 水水水!

    两题水题: 1.如果一个数能被分解为两个素数的乘积,则称为Semi-Prime,给你一个数,让你判断是不是Semi-Prime数. 2.定义F(0) = 7, F(1) = 11, F(n) = F( ...

  9. zoj 1204 Additive equations

    ACCEPT acm作业 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=204 因为老师是在集合那里要我们做这道题.所以我很是天 ...

最新文章

  1. Windows窗口的建立
  2. 新闻与传播c刊_周二刊、周刊、旬刊、季刊……大辨析
  3. C# 设置Word文档保护(加密、解密、权限设置)
  4. 虚拟机 centos 6.5 扩展根目录分区大小
  5. plist 文件的读写
  6. C++11多线程之future和promise
  7. [待总结]redmine
  8. permutations python_为什么Python的itertools.permutations包含重复项? (当原始列表重复时)...
  9. [恢]hdu 1019
  10. Unity3D之UGUI基础5:Toggle复选框
  11. Java 学习之集合类(Collections)
  12. 【云原生】设备入云之FlexManager数据通道的具体部署
  13. 转:MySQL 的 my.cnf 文件(解决 5.7.18 下没有 my-default.cnf )
  14. erwfgergve
  15. .net微信 验证 Token完整代码
  16. 什么是网页源代码和网站的源代码
  17. 信号量(Semaphore)、闭锁(Latch)、栅栏(Barrier)
  18. VBA word 常用代码及注释
  19. elasticsearch—索引与检索(一)
  20. SQLServer通过sql修改表主键

热门文章

  1. golang防止MySQL注入_mysql – 如何最大限度地降低golang服务中下游服务中SQL注入的风险?...
  2. sql两个表查不同数据_产品操作MySQL第6篇 – 数据过滤-WHERE子句
  3. python可视化工具好用_6款Python必备的可视化工具推荐
  4. lol战绩查询接口_LOL:莫名其妙被封号?3把躺赢局被说是代打
  5. 中设置colorbar_【值得收藏】如何画出学术论文中需要的各种精美插图,看这一篇就够了!...
  6. 数据结构——模式匹配kmp算法
  7. Android切换泰语,Android应用内切换语言
  8. mysql权限create细化_mysql权限精细化分配-阿里云开发者社区
  9. 数据结构 - 最小堆最大堆
  10. leetcode1005. K 次取反后最大化的数组和