三分算法


綜合於大牛們的總結:

三分算法解決凸形或者凹形函數的極值;

二分解決具有單調性的函數的極值;

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