码迷,mamicode.com
首页 > 编程语言 > 详细

三分算法

时间:2018-05-16 00:40:56      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:更新   缩小   rmi   ble   mat   noip   技术   noi   范围   

前言

在自从gdoi2016被第一题的三分虐了后,再次接触三分,其实不难。
三分算法解决凸形或者凹形函数的极值。

流程

技术分享图片
\(令lmid=l+\dfrac{r-l}{3},rmid=r-\dfrac{r-l}{3}\)
\(当lmid在函数上的值小于rmid时将l更新为lmid\)
\(当rmid在函数上的值小于lmid时将r更新为rmid\)
直到\(l>=r\)

原理

\(当lmid在函数上的值小于rmid时,易证lmid一定在极值的左边,所以将l更新为lmid\)
同样\(当rmid在函数上的值小于lmid时,易证rmid一定在极值的右边,所以将r更新为rmid\)
通过这样来一次次缩小(l,r)的范围。

code

    double l=0,r=n;
    while(l+0.001<=r)
    {
        double mid1=l+(r-l)/3,mid2=r-(r-l)/3;
        if(a[mid1]<a[mid2])
            l=lmid;
        else
            r=rmid;
    }

推荐一道好题,
【NOIP2016提高A组模拟8.14】传送带

三分算法

标签:更新   缩小   rmi   ble   mat   noip   技术   noi   范围   

原文地址:https://www.cnblogs.com/chen1352/p/9043511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!