欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

hdu5105给你一个方程,让你求极值(直接暴力)

发布时间:2025/6/17 编程问答 54 豆豆
生活随笔 收集整理的这篇文章主要介绍了 hdu5105给你一个方程,让你求极值(直接暴力) 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
题意:
      给你一个方程f[x] = abss(a * x * x * x + b * x * x + c * x + d);
然后给你各个参数还有x(-100<x<100)的取值范围,然后让你求极大值。


思路:
     一开始上来就来了个三分,结果一直wa,其实这个函数可以直接求导,用高中知识得到最值,关键是忘记怎么求了,其实还有一个更猥琐的方法,那就是直接暴力,题目要求是保留两位小数就行,而且x的范围不是很大,所以我们直接暴力x每次增加eps,我的eps=0.0001AC了,没试过再小点行不行,还有就是注意一点,最后别忘了算一下右边界,因为暴力的时候有可能错过右边界,这个地方没注意,WA了一次。




#include<stdio.h>


#define eps 0.0001


double abss(double x)
{
   return x > 0 ? x : -x;
}


double fun(double a ,double b ,double c ,double d ,double x)
{
    return abss(a * x * x * x + b * x * x + c * x + d);
}
    
double maxx(double x ,double y)
{
    return x > y ? x : y;
}


int main ()
{
   double a ,b ,c ,d ,l ,r;
   while(~scanf("%lf %lf %lf %lf %lf %lf" ,&a ,&b ,&c ,&d ,&l ,&r))
   {
      double Ans = 0;
      while(l <= r)
      {
         Ans = maxx(Ans ,fun(a ,b ,c ,d ,l));
         l += eps;
      }
      Ans = maxx(Ans ,fun(a ,b ,c ,d ,r));
      printf("%.2lf\n" ,Ans);
   }
   return 0;
}
         

总结

以上是生活随笔为你收集整理的hdu5105给你一个方程,让你求极值(直接暴力)的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。