开始算法基础学习的第一天

今天学习的内容是三分搜索 相对来说很基础的内容(还是觉得脑子不够用)

三分搜索主要用于凸函数查找极大值。

(盗个图)

如图所示 若要查找该函数的最大值 可以考虑和二分法一样的思路,即用L,R两个端点去不断地逼近这个最大点

但是在这里仅用一个mid中值是不够的 因此添加了一个mmid = (mid+R)/2 判断函数在mid和mmid两点的大小就可以进一步判断极值存在于哪一段中

用一个便于理解的办法,我们分成以下两种情况来讨论:

1.mid,mmid在最大值的同一侧:这时更大的那个值更接近极值 比如mid>mmid那么就可以确定(mmid,R)区间内肯定没有极值,因此抛弃它

2.mid,mmid在最大值的两侧:依然是更大的那个值更接近极值 比如mid>mmid那么也可以确定(mmid,R)区间内肯定没有极值

综上 我们判断mid,mmid两点函数值的大小来缩短区间 逼近极值点(具体见代码)

/*三分搜索实例--ZOJ3203:LightBulb*/
# include<iostream> using namespace std; const double EPS = 1e-;//设定精度 double D, H, h;//为了方便计算写成了全局变量 double calc(double x)
{
return (D - x) + H - D*(H - h) / x;
}//clac函数。根据几何关系推导。 double ternarysearch(double l, double r)
{
double mid,mmid; while (l + EPS < r)
{
mid = (l + r) / ;
mmid = (mid + r) / ; double mid_value = calc(mid);
double mmid_value = calc(mmid); if (mid_value > mmid_value)
r = mmid;
else
l = mid;
} return l;
}//三分搜索主体部分 int main()
{
int T;
double target; cin >> T; while (T--)
{
cin >> H >> h >> D; target = ternarysearch(D-D*h/H,D);//注意开始的两个点的取值 printf("%.3f\n", calc(target)); } return ;
}

对于一道题目 关键还是写出calc函数。。

三分搜索-ZOJ LightBulb的更多相关文章

  1. hdu 4355 Party All the Time(三分搜索)

    Problem Description In the Dark forest, there is a Fairy kingdom where all the spirits will go toget ...

  2. Weakness and Poorness CodeForces - 578C 三分搜索 (精度!)

    You are given a sequence of n integers a1, a2, ..., an. Determine a real number x such that the weak ...

  3. Codeforces Gym101246J:Buoys(三分搜索)

    http://codeforces.com/gym/101246/problem/J 题意:给出n个点坐标,要使这些点间距相同的话,就要移动这些点,问最少的需要的移动距离是多少,并输出移动后的坐标. ...

  4. Codeforces 782B:The Meeting Place Cannot Be Changed(三分搜索)

    http://codeforces.com/contest/782/problem/B 题意:有n个人,每个人有一个位置和速度,现在要让这n个人都走到同一个位置,问最少需要的时间是多少. 思路:看上去 ...

  5. [ACM_搜索] ZOJ 1103 || POJ 2415 Hike on a Graph (带条件移动3盘子到同一位置的最少步数 广搜)

    Description "Hike on a Graph" is a game that is played on a board on which an undirected g ...

  6. 三分套三分 --- HDU 3400 Line belt

    Line belt Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=3400 Mean: 给出两条平行的线段AB, CD,然后一 ...

  7. poj 3301 Texas Trip(几何+三分)

    Description After a day trip with his friend Dick, Harry noticed a strange pattern of tiny holes in ...

  8. hdu3756 三分求最小圆锥

    题意:       让你找到一个最小的圆柱去覆盖所有的竖直的线段.. 思路:       三分,直接去三分他的半径,因为想下,如果某个半径是最优值,那么 从R(MAX->now->MIN) ...

  9. Soj题目分类

    -----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...

随机推荐

  1. 金软PDF转换(x-PDFConper)

    一.产品概述 金软PDF转换(x-PDFConper)软件产品是一款能够在手机.平板电脑等移动终端设备上.能够浏览MS Office 的Word.Excel.PowerPoint.PDF 等四种格式文 ...

  2. SIM800L透传模式配置

    UART1_SendString("AT+CIPCLOSE=1"); //关闭连接 delay_ms(100); Second_AT_Command("AT+CIPSHU ...

  3. Javascript中的对象和原型(三)(转载)

    在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...

  4. linode使用apt更新时停止的错误

    使用ubuntu在更新系统时候,有时候会出现这样的问题: 0% [Connecting to security.ubuntu.com (2001:67c:1560:8001::14)] 问了下客户,他 ...

  5. Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7

    Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception processVob7 1. 1. javascript异常处理机制 ...

  6. 2、visual studio 常用设置

    1.关闭 “引用” 提示 有时候感觉 “方法” 或者 “类” 上的引用有点乱: 去掉它的步骤: 1)在 “引用”文字上单击鼠标右键: 2)在弹出的“选项” 对话框中,取消 CodeLens: 2.打开 ...

  7. Observable 示例之 Windows Phone 列表内项目逐个加载

    在写 Windows phone应用性能优化(一)的时候,在 ListBox 的项加载的时候,添加了一些简单的动画. 其实在 Windows Phone 的应用中使用 Blend 设计动画是很容易的, ...

  8. 架构设计之Spring-Session的分布式集群会话管理

    发表于 2017-04-24  |  160次围观   |   分类于 架构设计   |   暂无评论 前言 通常在web开发中,回话管理是很重要的一部分,用于存储与用户相关的一些数据.对于JAVA开 ...

  9. CentOS minimal 版安装图形界面的步骤分享,中文语言包

    1.连接网络: CentOS minimal.iso安装好后,进入终端,默认是不开网络的, 首先启用网卡, 自动获取ip. ifconfig eth0 up dhclient eth0 这时候再 if ...

  10. 向服务器发送josn字符串,服务器端解析

    <script type="text/javascript"> $(function () { $("#btnsave").click(functi ...