Light Bulb 三分入门题
2015-08-16 21:13
176 查看
Light Bulb
分析:求出公式,发现在给定范围内是凸函数。三分求最值。
分析:求出公式,发现在给定范围内是凸函数。三分求最值。
/******************************** please don't hack me!! /(ToT)/~~ __------__ /~ ~\ | //^\\//^\| /~~\ || T| |T|:~\ | |6 ||___|_|_||:| \__. / o \/' | ( O ) /~~~~\ `\ \ / | |~~\ | ) ~------~`\ /' | | | / ____ /~~~)\ (_/' | | | /' | ( | | | | \ / __)/ \ \ \ \ \/ /' \ `\ \ \|\ / | |\___| \ | \____/ | | /^~> \ _/ < | | \ \ | | \ \ \ -^-\ \ | ) `\_______/^\______/ ************************************/ #include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <string> #include <vector> #include <set> #include <map> #include <queue> #include <stack> #include <cstdlib> #include <sstream> using namespace std; typedef long long LL; const LL INF = 0x5fffffff; const double EXP = 1E-8; const LL MOD = (LL)1E9+7; const int MS = 1005; double H, h, D; double fun(double x) { return (h - H) * D / (D - x) + H + x; } int main() { int T; scanf("%d",&T); while (T--) { scanf("%lf%lf%lf",&H,&h,&D); double l = 0; double r = h * D / H; while ((r - l) >= EXP) { double mid = (l + r) / 2; double mmid = (mid + r) / 2; if (fun(mid) > fun(mmid)) r = mmid; else l = mid; } printf("%.3lf\n",fun(l)); } return 0; }
相关文章推荐
- 判素数+找规律 BestCoder Round #51 (div.2) 1001 Zball in Tina Town
- iPhone手机屏幕的尺寸
- poj1321c语言棋盘简单深搜
- python 点滴记录15:MAC OS安装MySQLdb
- Spring学习笔记-springMVC基于注解的控制器(基本概念)
- Unix 网络编程基础----网络字节序(大端小端)
- java对象引用和值引用,特殊的String!
- 08 条件和循环 - 《Python 核心编程》
- LVS + KEEPALIVED + WINDOWS SERVER 2008 R2 ------高可用负载均衡
- iOS开发_概述和程序的执行顺序
- 经典语录
- 366 D的小L
- 基本粒子群优化算法(PSO)的matlab实现
- iOS学习(自定义button)
- 网络编程TCP(六)
- lr_save_string函数的作用-订飞机票的例子-把变量或者常量存入参数以供脚本使用
- jquery自己主动旋转的登录界面的背景代码登录页背景图
- POJ 2104 K-th Number
- Android的回调
- seci-log 1.02 发布,日志分析软件增加了多种告警