HDU 2899 Strange fuction 【三分】

时间:2022-05-19 05:55:10

三分可以用来求单峰函数的极值。

首先对一个函数要使用三分时,必须确保该函数在范围内是单峰的。

又因为凸函数必定是单峰的。

HDU 2899 Strange fuction 【三分】

证明一个函数是凸函数的方法:

HDU 2899 Strange fuction 【三分】

所以就变成证明该函数的一阶导数是否单调递增,或者其二阶导数是否大于0。

#include<stdio.h>
#include<math.h>
const double eps=1e-;
double js(double x,double y){
return *pow(x,)+*pow(x,)+*pow(x,)+*pow(x,)-y*x;
}
int main(){
int n;
double x,y,mmid,mid,l,r;
while(~scanf("%d",&n)){
while(n--){
scanf("%lf",&y);
l=,r=;
while(r-l>eps){
mid=(l+r)/;
mmid=(mid+r)/;
if(js(mid,y)<js(mmid,y))
r=mmid;
else
l=mid;
}
printf("%.4f\n",js(mid,y));
}
}
return ;
}