天天看點

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;
}