最近做题出现一种枚举方法,三分。跟二分类似,只是再分了一次。二分用来查找单调的数列或者别的什么,而三分可以用来求极值。比如一个先增大后减小的函数,可以用三分枚举得到极大值。

double tri_solve(double left,double right)
{
    double mid,midmid,ans1,ans2;
    FOR(i,1,r_size)//r_size我在上面定义了,是循环的次数,几百几千看题目而定
    {
        mid=(left+right)/2.0;
        midmid=(mid+right)/2.0;//midmid就是三分的关键
        ans1=work(mid);//work是用来求值的大小的
        ans2=work(midmid);
        if(ans1<ans2) left=mid;
        else right=midmid;
    }
    return ans1;
}