天天看点

hdu2899 三分

题意:

     给你个函数,F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x ,给你一个y,x的范围是0--100

问你最小的 F(x)

思路:

      本人推数学公式啥的没啥天赋,一看这个题目肯定是三分(自己感觉),然后直接敲完就ac了,估计正解什么的还要转换这个公式...然后...在然后..最后求一下2阶导函数,根据二阶但函数的正负判断什么凹凸性什么的(自己感觉),抱歉.....

#include<stdio.h>
#include<math.h>

#define eps 1e-9

double Fun(double x ,double y)
{
   return 6.0 * pow(x ,7.0) + 8 * pow(x ,6.0) + 7 * pow(x ,3.0) + 5 * pow(x ,2.0) - x * y;
}

double solve(double y)
{
   double low ,up ,mid ,mmid;
   double f1 ,f2;
   low = 0 ,up = 100.0;
   while(1)
   {
      mid = (low + up) / 2;
      mmid = (mid + up) / 2;
      f1 = Fun(mid ,y);
      f2 = Fun(mmid ,y);
      if(f1 > f2) low = mid;
      else up = mmid;
      if(up - low < eps) break;
   }
   return f1;
}

int main ()
{
   int t;
   double y;
   scanf("%d" ,&t);
   while(t--)
   {
      scanf("%lf" ,&y);
      printf("%.4lf\n" ,solve(y));
   }
   return 0;
}