【HDU 5105】Math Problem
题意
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的更多相关文章
- 【HDU 5858】Hard problem
边长是L的正方形,然后两个半径为L的圆弧和中间半径为L的圆相交.求阴影部分面积. 以中间圆心为原点,对角线为xy轴建立直角坐标系. 然后可以联立方程解出交点. 交点是$(\frac{\sqrt{7} ...
- 【HDU 5858】Hard problem(圆部分面积)
边长是L的正方形,然后两个半径为L的圆弧和中间直径为L的圆相交.求阴影部分面积. 以中间圆心为原点,对角线为xy轴建立直角坐标系. 然后可以联立方程解出交点. 交点是$(\frac{\sqrt{7} ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- [HDU - 5170GTY's math problem 数的精度类
题目链接:HDU - 5170GTY's math problem 题目描述 Description GTY is a GodBull who will get an Au in NOI . To h ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
随机推荐
- Appium路线图及1.0正式版发布
Appium更新的速度极快,从我试用时候的0.12到1.0(0.18版本后就是1.0),完全符合移动互联网的节奏. 更新可能会慢,可以多试几次 整理了testerhome上思寒发表的帖子,让我们来看下 ...
- POJ 2773 Happy 2006【GCD/欧拉函数】
根据欧几里德算法,gcd(a,b)=gcd(a+b*t,b) 如果a和b互质,则a+b*t和b也互质,即与a互质的数对a取模具有周期性. 所以只要求出小于n且与n互质的元素即可. #include&l ...
- 利用WinPcap模拟网络包伪造飞秋闪屏报文
起因 不知道从什么时候开始,同事开始在飞秋上发闪屏振动了,后来变本加厉,成了每日一闪.老闪回去也比较麻烦,作为程序猿呢,有没有什么偷懒的办法呢?(同事负责用户体验,不大懂编程).然后尝试了以下思路: ...
- Android Studio系列教程二--基本设置与运行
Android Studio系列教程二--基本设置与运行 2014 年 11 月 28 日 DevTools 本文为个人原创,欢迎转载,但请务必在明显位置注明出处! 上面一篇博客,介绍了Studio的 ...
- mybatis order by绑定的参数
<select id = "queryByStartWithOrder" resultType="org.seckill.entity.SuccessKilled& ...
- java的IO操作之--RandomAccessFile
目标: 1)掌握RandomAccessFile类的作用. 2)用RandomAccessFile读取指定位置的数据. 具体内容 RandomAccessFile类的主要功能是完成随机读取功能,可以读 ...
- Git技巧总结分享
接触Git有很长一段时间了,从最初的不懂到逐渐熟悉运用,相比于SVN,更热衷于Git这一款强大的版本控制工具. 废话不多说,下面对Git做了一些技巧总结,在此分享下,希望能帮助到一些喜欢Git的朋友们 ...
- iOS下使用SHA1WithRSA算法加签源码
首先了解一下几个相关概念,以方便后面遇到的问题的解决: RSA算法:1977年由Ron Rivest.Adi Shamirh和LenAdleman发明的,RSA就是取自他们三个人的名字.算法基于一个数 ...
- flex布局滑动页面
html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...
- JS中的Navigator 对象
Navigator 对象包含有关浏览器的信息. 很多时候我们需要在判断网页所处的浏览器和平台,Navigator为我们提供了便利 Navigator常见的对象属性如下: 属性 描述 appCodeNa ...