HDU 2899 Strange fuction [二分]

时间:2022-09-18 05:54:48

1.题意:给一个函数F(X)的表达式,求其最值,自变量定义域为0到100

2.分析:写出题面函数的导函数的表达式,二分求导函数的零点,对应的就是极值点

3.代码:

 # include <iostream>
# include <cstdio>
# include <cmath>
using namespace std;
const double eps=1e-;
double Y;
int sgn(double x)
{
if(fabs(x)<eps) return ;
if(x>) return ;
else return -;
}
double F(double x)
{
return 6.0*pow(x,)+8.0*pow(x,)+7.0*pow(x,)+5.0*pow(x,)-Y*x;
}
double f(double x)
{
return 42.0*pow(x,)+48.0*pow(x,)+21.0*pow(x,)+10.0*x-Y;
}
void Solve()
{
scanf("%lf",&Y);
double l=;
double r=;
while(r-l>eps)
{
double mid=l+(r-l)/2.0;
if(sgn(f(mid))>) r=mid;
else l=mid;
}
printf("%.4f\n",F(l));
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
Solve();
}
return ;
}