三分算法


综合于大牛们的总结:

三分算法解决凸形或者凹形函数的极值;

二分解决具有单调性的函数的极值;

mid = (Left + Right) / 2

midmid = (mid + Right) / 2;

如果mid靠近极值点,则Right = midmid

否则(midmid靠近极值点),则Left = mid;

 

程序模版如下:

double cal(Type a)
{
    /* 根据题目的意思计算 */
}

void solve()
{
    double Left, Right;
    double mid, midmid;
    double mid_value, midmid_value;
    Left = MIN; Right = MAX;
    while (Left + EPS <= Right)
    {
        mid = (Left + Right) / 2;
        midmid = (mid + Right) / 2;
        if (cal(mid)>=cal(midmid)) 

            Right = midmid;
        else Left = mid;
    }
}

我搜索的三分算法的题目:HDU :3400  2298  4454  2438  3756  

                                 POJ:  3301   3737  

                                 ZOJ: 3203

利用有限的时间想把它们都ac掉,切了2道题目感觉三分题目对我来说挺难得,但是木有事,继续加油...每一道题都要把解题报告写好。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM