http://acm.hdu.edu.cn/showproblem.php?pid=5105

给定a,b,c,d,l,r,表示有一个函数f(x)=|a∗x3+b∗x2+c∗x+d|(L≤x≤R),求函数最大值。

考虑极点可能有0~2个。在极值点处函数的单调性会发生变化,所以最大值一定就在区间边界和极值点上。所以求下l,r,极值点的函数大小然后取最大的即可。

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <string>
  6. #include <queue>
  7. #include <map>
  8. #include <iostream>
  9. #include <algorithm>
  10. using namespace std;
  11. #define RD(x) scanf("%d",&x)
  12. #define RD2(x,y) scanf("%d%d",&x,&y)
  13. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  14. #define clr0(x) memset(x,0,sizeof(x))
  15. #define clr1(x) memset(x,-1,sizeof(x))
  16. template<class T> T max(T a, T b, T c) {
  17. return max(a, max(b, c));
  18. }
  19. const double pi = acos(-1.0);
  20. typedef long long LL;
  21. typedef unsigned long long ULL;
  22. const int modo = 1e9 + 7;
  23. const int INF = 0x3f3f3f3f;
  24. const int inf = 0x3fffffff;
  25. const LL _inf = 1e18;
  26. const int maxn = 55,maxm = 1<<12;
  27. const double eps = 1e-9;
  28. double A,B,C,D,l,r;
  29. double cal(double x)
  30. {
  31. if(l <= x && x <= r)
  32. return fabs(A*x*x*x + B*x*x + C*x + D);
  33. return -1;
  34. }
  35. double solve(double a,double b,double c)
  36. {
  37. if(fabs(a) < eps){
  38. if(fabs(b) < eps)
  39. return -1;
  40. return cal(-c/b);
  41. }
  42. double dta = b*b - 4*a*c;
  43. if(fabs(dta) >= eps){
  44. dta = sqrt(dta);
  45. return max(cal((dta - b)/2/a) , cal((-dta - b)/2/a));
  46. }
  47. return -1;
  48. }
  49. int main()
  50. {
  51. while(~scanf("%lf%lf%lf%lf%lf%lf",&A,&B,&C,&D,&l,&r)){
  52. double ans = max(cal(l),cal(r),solve(A*3,B*2,C));
  53. printf("%.2lf\n",ans);
  54. }
  55. return 0;
  56. }

绝对值的最大值就是函数最大值或者负的最小值的相反数,考虑用三分法,但是依然需要考虑l,r两点,不然会WA,谨记教训!

  1. #include <cstdio>
  2. #include <cstdlib>
  3. #include <cmath>
  4. #include <cstring>
  5. #include <string>
  6. #include <queue>
  7. #include <map>
  8. #include <iostream>
  9. #include <algorithm>
  10. using namespace std;
  11. #define RD(x) scanf("%d",&x)
  12. #define RD2(x,y) scanf("%d%d",&x,&y)
  13. #define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
  14. #define clr0(x) memset(x,0,sizeof(x))
  15. #define clr1(x) memset(x,-1,sizeof(x))
  16. template<class T> T max(T a, T b, T c , T d) {
  17. return max(max(a,d) , max(b, c));
  18. }
  19. const double pi = acos(-1.0);
  20. typedef long long LL;
  21. typedef unsigned long long ULL;
  22. const int modo = 1e9 + 7;
  23. const int INF = 0x3f3f3f3f;
  24. const int inf = 0x3fffffff;
  25. const LL _inf = 1e18;
  26. const int maxn = 55,maxm = 1<<12;
  27. const double eps = 1e-9;
  28. double a,b,c,d,l,r;
  29. double cal(double x)
  30. {
  31. return a*x*x*x + b*x*x + c*x + d;
  32. }
  33. int main()
  34. {
  35. while(~scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r)){
  36. double _l = l,_r = r;
  37. while(l + eps < r){
  38. double mid = (l+r)/2,rr = (mid + r)/2;
  39. if(cal(rr) < cal(mid))
  40. l = mid;
  41. else
  42. r = rr;
  43. }
  44. double ans1 = l;
  45.  
  46. l = _l,r = _r;
  47. while(l + eps < r){
  48. double mid = (l+r)/2,rr = (mid + r)/2;
  49. if(cal(rr) > cal(mid))
  50. l = mid;
  51. else
  52. r = rr;
  53. }
  54. double ans2 = l;
  55. printf("%.2lf\n",max(fabs(cal(_l)),fabs(cal(_r)),fabs(cal(ans1)),fabs(cal(ans2))));
  56. }
  57. return 0;
  58. }

hdu 5105 求函数极值 函数求导/三分法的更多相关文章

  1. HDU 5105 Math Problem --数学,求导

    官方题解: f(x)=|a∗x3+b∗x2+c∗x+d|, 求最大值.令g(x)=a∗x3+b∗x2+c∗x+d,f(x)的最大值即为g(x)的正最大值,或者是负最小值.a!=0时, g′(x)=3∗ ...

  2. BZOJ1857 传送带 (三分法求单峰函数极值)

    第一次发BZOJ的题解,先从水题开始吧,好不容易找到一道水题,那就从这题开始吧. 1.题设部分{ 题目描述: 在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线 ...

  3. python牛顿法求一元多次函数极值

    现在用牛顿法来实现一元函数求极值问题 首先给出这样一个问题,如果有这么一个函数$f(x) = x^6+x$,那么如何求这个函数的极值点 先在jupyter上简单画个图形 %matplotlib inl ...

  4. 深度学习:Sigmoid函数与损失函数求导

    1.sigmoid函数 ​ sigmoid函数,也就是s型曲线函数,如下: 函数: 导数: ​ 上面是我们常见的形式,虽然知道这样的形式,也知道计算流程,不够感觉并不太直观,下面来分析一下. 1.1 ...

  5. hdu 2814 快速求欧拉函数

    /** 大意: 求[a,b] 之间 phi(a) + phi(a+1)...+ phi(b): 思路: 快速求欧拉函数 **/ #include <iostream> #include & ...

  6. C语言求两个函数中的较大者的MAX函数

    //求两个函数中的较大者的MAX函数 #include <stdio.h> int main(int argc, const char * argv[]) { printf("i ...

  7. 欧拉函数,打表求欧拉函数poj3090

    欧拉函数 φ(n) 定义:[1,N]中与N互质的数的个数 //互质与欧拉函数 /* 求欧拉函数 按欧拉函数计算公式,只要分解质因数即可 */ int phi(int n){ int ans=n; ;i ...

  8. 【7.19 graphshortestpath graphallshortestpaths函数】matlab 求最短路径函数总结

    graphshortestpath 函数是用来解决最短路径问题的. 语法为: [dist, path, pred]=graphshortestpath(G,S) [dist, path, pred]= ...

  9. 【poj 3090】Visible Lattice Points(数论--欧拉函数 找规律求前缀和)

    题意:问从(0,0)到(x,y)(0≤x, y≤N)的线段没有与其他整数点相交的点数. 解法:只有 gcd(x,y)=1 时才满足条件,问 N 以前所有的合法点的和,就发现和上一题-- [poj 24 ...

随机推荐

  1. 升级到macos sierra xcode8 requires additional components to support runing and debugging choose Install to add required components

    升级到macos sierra xcode8 报提示:requires additional components to support runing and debugging choose Ins ...

  2. winAPI 检查系统设备拔插使用 WM_DEVICECHANGE 消息

    if(message->message == WM_DEVICECHANGE) { /*if (message->wParam == DBT_DEVICEARRIVAL || messag ...

  3. NashZhou的自我介绍

    行业: 电子商务服务业,目前主要是淘宝开放平台,ISV 关键词: 电商,淘宝直通车,关键词广告,自动优化 当前目标: 广告算法 广告主自动优化 希望能在这里结识有共同爱好踏实上进的园友,共同学习,共同 ...

  4. Sharepoint创建List

    (一)在一个环境下创建site 首先在sharepoint 2013 Central Administration中run administration --Application Managemen ...

  5. C、C++、Java、go的语法区别

    详细C++.Java比较:http://www.cnblogs.com/stephen-liu74/archive/2011/07/27/2118660.html 一.C.C++的区别 在很大程度上, ...

  6. 20145202、20145225、20145234 《信息安全系统设计基础》实验五 简单嵌入式WEB 服务器实验

    实验内容 1.配置环境 2.使用vi 编辑器阅读理解源码 2.编译应用程序 运行 make 产生可执行文件httpd 3.下载调试 使用 NFS 服务方式将HTTPD 下载到开发板上,并拷贝测试用的网 ...

  7. Servlet下载文件和http响应

    下载文件等: 1.得到公共的内容ServletContext sc = this.getServletContext(); 2.在链接名字后面加个? 一个参数?参数1=值 两个参数?参数1=值& ...

  8. (python)图片处理Pillow模块的使用

    Pillow中最重要的类就是Image,该类存在于同名的模块中.可以通过以下几种方式实例化:从文件中读取图片,处理其他图片得到,或者直接创建一个图片. 还有一个类为ImageDraw,用来画图. 1. ...

  9. python脚本执行Scapy出现IPv6警告WARNING解决办法

    安装完scapy,写了脚本执行后执行: WARNING: No route found for IPv6 destination :: (no default route?) 原因是用 from sc ...

  10. 移动App崩溃的测试用例设计

    我们的日常生活中对移动设备越来越多的使用意味着移动App测试这个主题已成为需要考虑的一个无法避免的问题.根据最近的调查研究,用户难以容忍有bug的移动App. 移动App Bug的影响是用户体验差.A ...