Light Bulb ZOJ - 3203 三分
三分:
和二分非常类似的一个算法,与二分不同的是
二分是单调的,而三分是一个先增后减或者先减后增
三分可以求出峰值。
注意三分一定是严格单调的,不能有相等的情况。
讲个例题:
题意:
一个人发现他的影子的长度随着他在灯泡和墙壁之间走到时发生着变化。一个突然的想法出现在脑海里,他想知道他的影子的最大长度。
例图:

输入格式
输入文件的第一行包含一个整数 ,表示测试数据的组数。
对于每组测试数据,仅一行,包含三个实数 , 和 , 表示灯泡的高度, 表示 mildleopard 的身高, 表示灯泡和墙的水平距离。
输出格式
输出文件共 行,每组数据占一行表示影子的最大长度,保留三位小数。
样例
样例输入
3
2 1 0.5
2 0.5 3
4 3 4
样例输出
1.000
0.750
4.000
题解:

1 #include<stdio.h>
2 #include<stdlib.h>
3 #include<iostream>
4 #include<string.h>
5 #include<algorithm>
6 using namespace std;
7 const int maxn=500005;
8 const int INF=0x3f3f3f3f;
9 const int eps=1e-11;
10 typedef long long ll;
11 double height,high,width;
12 double panduan(double x)
13 {
14 double ans=high/height*width;
15 double dis=width-x; //dis就是人距离墙的距离
16 if(ans-dis>0) //ans就是影子不在墙的上面时它的长度
17 {
18 double z=dis/width;
19 double sum=dis+(z*height-high)/(z-1.0);
20 return sum;
21 }
22 else
23 {
24 return ans;
25 }
26 }
27 int main()
28 {
29 int t;
30 scanf("%d",&t);
31 while(t--)
32 {
33 scanf("%lf%lf%lf",&height,&high,&width);
34 double l=0,r=width; //我的三分是三分的人距离墙的距离
35 while(r - l > 1e-11) //这就是三分模板了,只要确定了三分的上界和下界就可以直接代入使用
36 {
37 double m1 = l + (r - l) / 3;
38 double m2 = r - (r - l) / 3;
39 if(panduan(m1) > panduan(m2)) r = m2;
40 else l = m1;
41 }
42 printf("%.3lf\n", panduan(l));
43 }
44 return 0;
45 }
Light Bulb ZOJ - 3203 三分的更多相关文章
- ZOJ 3203 Light Bulb (三分+计算几何)
B - Light Bulb Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%lld & %llu Submit ...
- 三分 --- ZOJ 3203 Light Bulb
Light Bulb Problem's Link: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3203 Mean: ...
- ZOJ 3203 Light Bulb (三分查找)
Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...
- ZOJ 3203 Light Bulb - 求导求最大值
如果L全在地面上: 输出 h * D / H 如果L全在墙上: 输出 h 否则: (D - X ) / X = Y / (H - h) L = D - X + h - Y 然后对L求导即可 #incl ...
- zoj 3203 Light Bulb,三分之二的基本问题
Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...
- ZOJ 3203 Light Bulb
Compared to wildleopard's wealthiness, his brother mildleopard is rather poor. His house is narrow a ...
- ZOJ 3203 Light Bulb(数学对勾函数)
Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, h ...
- [清华集训2015]灯泡(浙江大学ZOJ 3203 Light Bulb)
Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildleopard's wealthiness, his brother ...
- Light Bulb(三分)
ZOJ Problem Set - 3203 Light Bulb Time Limit: 1 Second Memory Limit: 32768 KB Compared to wildl ...
随机推荐
- Assuming that agent dropped connection because of access permission
Assuming that agent dropped connection because of access permission
- 一. SpringCloud简介与微服务架构
1. 微服务架构 1.1 微服务架构理解 微服务架构(Microservice Architecture)是一种架构概念,旨在通过将功能分解到各个离散的服务中以实现对解决方案的解耦.你可以将其看作是在 ...
- Linux设置开机自动挂载镜像文件
1.将文件上传到服务器上(本例上传到/Data/software下) 2.挂载 mount -o loop /Data/software/rhel-server-7.6-x86_64-dvd.iso ...
- 用SAP浏览网页
在SAP里,通过两个类就可以做一个简单的,嵌入sap里的网页.这两个类就是 1. cl_gui_custom_container 这个类是自定义屏幕里用得,也就是画一个container,在这个容器中 ...
- ABP vNext 实现租户Id自动赋值插入
背景 在使用ABP vNext过程中,因为我们的用户体系庞大,所以一直与其他业务同时开发,在开发其他业务模块时,我们一直存在着误区:认为ABP vNext 自动处理了数据新增时的租户Id(Tenant ...
- 知识图谱KnowledgeGraph核心技术培训班 2月03日— 2月06日
- 基于Redo Log和Undo Log的MySQL崩溃恢复流程
在之前的文章「简单了解InnoDB底层原理」聊了一下MySQL的Buffer Pool.这里再简单提一嘴,Buffer Pool是MySQL内存结构中十分核心的一个组成,你可以先把它想象成一个黑盒子. ...
- linux设备
设备初始化时同样要执行一个device_register函数,该函数传入一个struct device *类型的指针,因此要定义一个struct device类型的变量作为我们的设备. struct ...
- 详解Mybatis拦截器(从使用到源码)
详解Mybatis拦截器(从使用到源码) MyBatis提供了一种插件(plugin)的功能,虽然叫做插件,但其实这是拦截器功能. 本文从配置到源码进行分析. 一.拦截器介绍 MyBatis 允许你在 ...
- assets和static的区别
相同点:assets和static两个都是存放静态资源文件.项目中所需要的资源文件图片,字体图标,样式文件等都可以放在这两个文件下,这是相同点不相同点:assets中存放的静态资源文件在项目打包时,也 ...