f(x)=|ax3+bx2+cx+d|

求f(x)在L≤x≤R的最大值。

分析

参数有可能是0,注意分类讨论

1.当a=0时

  b=0,f为一次函数(c≠0)或者常数函数(c=0),最大值点在区间端点。

  b≠0,f为二次函数,最大值点在区间端点或者x0=c/(2*b),当L≤x0≤R时,ans=max{f(L),f(R),f(x0)}。

2.当a≠0时,f为三次函数

  最大值点在区间端点或者导函数的零点x1,x2

  注意x1,x2是否在[L,R]区间。

代码

#include<cstdio>
#include<algorithm>
#include<cmath>
#define dd double using namespace std; dd a,b,c,d,l,r;
dd f(dd x)
{
return fabs(a*x*x*x+b*x*x+c*x+d);
}
void ff(dd a,dd b,dd c,dd& ans)
{
if(a==)
{
if(b==) return;
ans=max(ans,f(-c/b));
return;
}
if(b*b<*a*c) return;
dd q=sqrt(b*b-*a*c);
dd x1=(-q-b)/(*a);
dd x2=(q-b)/(*a);
if(l<x1&&x1<r)
{
ans=max(ans,f(x1));
if(r>x2) ans=max(ans,f(x2));
}
else if(l<x2&&x2<r) ans=max(ans,f(x2));
}
int main()
{
while(~scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r))
{
dd ans;
ans=max(f(l),f(r));
ff(*a,*b,c,ans);
printf("%.2lf\n",ans);
}
return ;
}

下面这样写,省了判断区间和顶点的不同位置关系。

#include<cstdio>
#include<algorithm>
#include<cmath>
#define dd double using namespace std; dd a,b,c,d,l,r,ans;
dd f(dd x)
{
if(x<l||x>r)return -;
return fabs(a*x*x*x+b*x*x+c*x+d);
}
dd ff(dd a,dd b,dd c)
{
if(a==)
{
if(b==) return -;
return f(-c/b);
}
if(b*b<*a*c) return -;
dd q=sqrt(b*b-*a*c);
dd x1=(-q-b)/a;
dd x2=(q-b)/a;
return max(f(x1/),f(x2/));
}
int main()
{
while(~scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r))
{
ans=max(f(l),f(r));
ans=max(ans,ff(*a,*b,c));
printf("%.2lf\n",ans);
}
return ;
}

【HDU 5105】Math Problem的更多相关文章

  1. 【HDU 5858】Hard problem

    边长是L的正方形,然后两个半径为L的圆弧和中间半径为L的圆相交.求阴影部分面积. 以中间圆心为原点,对角线为xy轴建立直角坐标系. 然后可以联立方程解出交点. 交点是$(\frac{\sqrt{7} ...

  2. 【HDU 5858】Hard problem(圆部分面积)

    边长是L的正方形,然后两个半径为L的圆弧和中间直径为L的圆相交.求阴影部分面积. 以中间圆心为原点,对角线为xy轴建立直角坐标系. 然后可以联立方程解出交点. 交点是$(\frac{\sqrt{7} ...

  3. 【HDU 5647】DZY Loves Connecting(树DP)

    pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...

  4. 【HDU 5145】 NPY and girls(组合+莫队)

    pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...

  5. 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题

    [HDU  3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...

  6. [HDU - 5170GTY's math problem 数的精度类

    题目链接:HDU - 5170GTY's math problem 题目描述 Description GTY is a GodBull who will get an Au in NOI . To h ...

  7. -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】

    [把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...

  8. 【HDU 2196】 Computer(树的直径)

    [HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...

  9. 【HDU 2196】 Computer (树形DP)

    [HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...

随机推荐

  1. HTML5本地存储localStorage与sessionStorage

    在最近的项目中用到了html5的本地存储,下面总结一下. 1.html5几种存储形式 本地存储(localStorage && sessionStorage) 离线缓存(applica ...

  2. js/jquery判断浏览器的方法总结

    JS获取浏览器信息浏览器代码名称:navigator.appCodeName浏览器名称:navigator.appName浏览器版本号:navigator.appVersion对Java的支持:nav ...

  3. Unity3D面试题汇总

    1.请描述游戏动画有哪几种,以及其原理. 2.alpha blend 工作原理 3.写光照计算中的diffuse的计算公式 4.lod是什么,优缺点是什么 5.两种阴影判断的方法工作原理 6.MipM ...

  4. 安装依赖包时--save-dev以及-save的区别及意义

    首先这样做会生成一个package.json的配置文件,并在里面增加相应的版本信息,以后运行程序时,安装依赖包可以直接 npm  install或者你有安装淘宝镜像,那就cnpm install 就一 ...

  5. Javascript的变量与delete操作符

    原文:http://charlee.li/javascript-variables-and-delete-operator.html 刚刚看到一篇好文(原文链接), 对Javascript中的dele ...

  6. WinForm 快捷键设置

    一.窗体快捷键,只在窗体上有效果 首先在form_load的时候写上this.KeyPreview=true;//表示窗体接受按键事件 然后如下 private void Frm_KeyDown(ob ...

  7. C# 应用程序配置文件操作

    应用程序配置文件,对于asp.net是 web.config对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和依据,其本质 ...

  8. RDLC系列之五 初试XAML

    本章只讲解xaml部分,其余都和winform下一样 1.xaml代码 <Window x:Class="RDLC.WPF.MainWindow" xmlns="h ...

  9. [Elixir008]Nested Module里的动态函数调用方式

    有时我们需要动态生成一些模块名,然后调用它里面的函数.但是我们常常碰到的却是明明有那个模块,结果还是raise模块未定义... 我们来看看到底怎么回事? 首先我们定义一个函数 iex(1)> d ...

  10. scrapy 的 selector 练习

    网页结构: <html> <head> <base href='http://example.com/' /> <title>Example websi ...