最近做题出现一种枚举方法,三分。跟二分类似,只是再分了一次。二分用来查找单调的数列或者别的什么,而三分可以用来求极值。比如一个先增大后减小的函数,可以用三分枚举得到极大值。
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;
}
浙公网安备 33010602011771号