三分算法

来源:互联网 发布:java web license 编辑:程序博客网 时间:2024/05/16 18:40

前言

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

流程

这里写图片描述
lmid=l+rl3,rmid=rrl3
lmidrmidllmid
rmidlmidrrmid
直到l>=r

原理

lmidrmidlmidllmid
同样rmidlmidrmidrrmid
通过这样来一次次缩小(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】传送带

2 0
原创粉丝点击