网站技术部门架构,分享类网站源码,泰州市住房和城乡建设局网站,东莞网站建设aj工作室今天这个**又带着题走来了#xff01;#xff01; 文章目录[TOC] 题目题解代码实现题目
相比 wildleopard 的家#xff0c;他的弟弟 mildleopard 比较穷。他的房子是狭窄的而且在他的房间里面仅有一个灯泡。每天晚上#xff0c;他徘徊在自己狭小的房子里#xff0c;思考如… 今天这个**又带着题走来了
文章目录[TOC] 题目题解代码实现 题目
相比 wildleopard 的家他的弟弟 mildleopard 比较穷。他的房子是狭窄的而且在他的房间里面仅有一个灯泡。每天晚上他徘徊在自己狭小的房子里思考如何赚更多的钱。有一天他发现他的影子的长度随着他在灯泡和墙壁之间走到时发生着变化。一个突然的想法出现在脑海里他想知道他的影子的最大长度。 输入格式 输入文件的第一行包含一个整数 T 表示测试数据的组数。 对于每组测试数据仅一行包含三个实数H h 和 DH 表示灯泡的高度 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轴坐标也就出来了 A0HBiph
情况1解决 如果影子木有被折射到墙上 简单的待定系数求和ykxb求出直线AB解析式再另y0解出x 答案就是x减掉距离ip
情况2解决如上方图 我们要求的就是GHHC 首先按照上面情况一的做法解出xGHD-ipPx0 那么PHx-D 接下来要运用的就是tan α得到CH 三角函数往往又跟相似挂钩这里我们就用相似来解决三角函数 △CHP∽△AOP很容易就得到这个了 那么根据相似比相等的性质我们可以得出CH/AO HP/OP 即CHHP/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红酒白酒葡萄鸡尾酒~~