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∗a∗x2+2∗b∗x+c 求出g′(x)的根(若存在,x1,x2,由导数的性质知零点处有极值。ans=max(f(xi)|L≤xi≤R).然后考虑两个端点的特殊性有ans=max(ans,f(L),f(R)).
当时 x = -c/(2*b) 写成 x = -c/2*b 了,然后过pretest了。 然后。。你敢信?
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#define eps 1e-8
using namespace std;
#define N 50017 int sgn(double x)
{
if(x > eps) return ;
if(x < -eps) return -;
return ;
} double a,b,c,d,L,R; double calc(double x) { return fabs(a*x*x*x + b*x*x + c*x + d); } int main()
{
while(scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&L,&R)!=EOF)
{
if(sgn(a) == )
{
if(sgn(b) == )
{ if(sgn(fabs(calc(L))-fabs(calc(R))) >= )
printf("%.2f\n",calc(L));
else
printf("%.2f\n",calc(R));
}
else
{
double X = -c/(2.0*b);
double k1 = calc(L);
double k2 = calc(R);
double k3;
if(sgn(X-L) >= && sgn(X-R) <= )
k3 = calc(X);
else
k3 = 0.0;
printf("%.2f\n",max(max(k1,k2),k3));
}
continue;
}
double delta = 4.0*b*b - 12.0*a*c;
if(sgn(delta) <= )
{
if(sgn(fabs(calc(L))-fabs(calc(R))) >= )
printf("%.2f\n",calc(L));
else
printf("%.2f\n",calc(R));
}
else
{
double X1 = (-2.0*b + sqrt(delta))/(6.0*a);
double X2 = (-2.0*b - sqrt(delta))/(6.0*a);
double k1 = calc(L);
double k2 = calc(R);
double k3,k4;
if(sgn(X1-L) >= && sgn(X1-R) <= )
k3 = calc(X1);
else
k3 = 0.0;
if(sgn(X2-L) >= && sgn(X2-R) <= )
k4 = calc(X2);
else
k4 = 0.0;
printf("%.2f\n",max(max(max(k1,k2),k3),k4));
}
}
return ;
}
HDU 5105 Math Problem --数学,求导的更多相关文章
- hdu 5105 Math Problem(数学)
pid=5105" target="_blank" style="">题目链接:hdu 5105 Math Problem 题目大意:给定a.b ...
- HDU 5105 Math Problem
让求 f(x)=|a∗x3+b∗x2+c∗x+d|(L≤x≤R)的最大值 这个题目讨论a和b的值,如果a==0的话,那么这个方程就变成了一个一元二次方程,直接找端点和对称轴(如果对称轴在给定的区间内 ...
- hdu 6182A Math Problem(快速幂)
You are given a positive integer n, please count how many positive integers k satisfy kk≤nkk≤n. Inp ...
- BZOJ 5020 [THUWC2017]Drown in the math ocean (LCT+求导)
题目大意: 太长了略 洛谷题面传送门 嗯,数学题 感觉考试要是出这种题我就死翘翘了[逃 不用想都知道要$LCT$维护断边连边,但询问该如何处理呢 利用题目给出的公式 $f(x)=\sum_{i=0}^ ...
- hdu5974 A Simple Math Problem(数学)
题目链接 大意:给你两个数X,YX,YX,Y,让你找两个数a,ba,ba,b,满足a+b=X,lcm(a,b)=Ya+b=X,lcm(a,b)=Ya+b=X,lcm(a,b)=Y. 思路:枚举gcd( ...
- 【Math】矩阵求导
https://en.wikipedia.org/wiki/Matrix_calculus http://blog.sina.com.cn/s/blog_7959e7ed0100w2b3.html
- BestCoder18 1002.Math Problem(hdu 5105) 解题报告
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5105 题目意思:给出一个6个实数:a, b, c, d, l, r.通过在[l, r]中取数 x,使得 ...
- HDU 5858 Hard problem (数学推导)
Hard problem 题目链接: http://acm.split.hdu.edu.cn/showproblem.php?pid=5858 Description cjj is fun with ...
- hdu 1757 A Simple Math Problem (乘法矩阵)
A Simple Math Problem Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
随机推荐
- Hibernate中的一对一关联和组件的映射
Hibernate提供了两种映射一对一映射关联关系的方式: 01.按照外键映射 02.按照主键映射 下面以员工账号表和员工档案表(员工账号和档案表之间是一对一的关系)为例,介绍这两种映射关系,并使用这 ...
- ahjesus 安装mongodb企业版for ubuntu
导入共匙 sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10 创建源列表 echo 'deb http ...
- RAID选项
RAID:Redundant Array Independent Disk(独立磁盘构成的具有冗余能力的阵列) 最常见的为RAID类型为:0,1,5和10:3和6很少见,但在某些环境中仍然有用. RA ...
- windbg定位死锁
操作系统对死锁的描述如下: 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去. 那么为什么会产生死锁呢? 1.因为系统资源不足. ...
- 【读书笔记】iOS-复制的种类
一,你可以使用不同的方法复制对象.大多数对象都引用(即指向)其它对象. 二,浅层复制,不复制引用对象,新复制的对象只指向现有的引用对象.NSArray类的copy方法是浅层复制.当复制一个NSArra ...
- 一个线程加一运算,一个线程做减一运算,多个线程同时交替运行--synchronized
使用synchronized package com.pb.thread.demo5; /**使用synchronized * 一个线程加一运算,一个线程做减法运算,多个线程同时交替运行 * * @a ...
- Python学习 windows下面安装Python和pip(一)
windows下面安装Python和pip 安装Python 第一步,我们先来安装Python, https://www.python.org/downloads/ 这里选择的是2.7.10 第二步. ...
- iOS 摇一摇
- (void)viewDidLoad { [super viewDidLoad]; [[UIApplication sharedApplication] setApplicationSupports ...
- OC语言-06-OC语言-block与protocol
一.block 1> 基本使用 相当于用来存放代码的代码块 效率高 若没有形参可以省略小括号 2> block与函数的相同点 可以保存代码 可以有返回值 可以有形参 调用方式一样 3> ...
- iOS-UI分析利器--Reveal安装破解以及简单使用
前言:在 iOS 开发中,我们有时很希望有一款类似 Web 开发中的 UI Debug 工具(例如:Firebug),让我们能够实时查看 UI 的结构,还可以实时更改某个 UIView 的位置和大小的 ...