zoukankan      html  css  js  c++  java
  • hdu5105Math Problem(分类讨论)

    题目链接:

    huangjing

    题目:

    思路:

    给出的是一个方程,首先讨论最高项系数。
    1:a==0&& b==0  那么函数就是线性的。直接比較端点就可以。

    2   a==0&&b!=0  那么函数就是二次函数。直接算出特征值,然后比較端点值就可以。。

    3  a!=0  又有几种情况,那么当特征根  b*b-4*a*c<0 时  说明愿函数是单调,直接比較端点值就可以。

    当大于0的时候,直接求出两个根,然后和端点值比較就可以

    ps:全部的特征根都要是有效的,即都要在[L,R]之间。



    题目:

    Math Problem

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 943    Accepted Submission(s): 250


    Problem Description
    Here has an function:
      f(x)=|ax3+bx2+cx+d|(LxR)
    Please figure out the maximum result of f(x).
     

    Input
    Multiple test cases(less than 100). For each test case, there will be only 1 line contains 6 numbers a, b, c, d, L and R. (10a,b,c,d10,100LR100)
     

    Output
    For each test case, print the answer that was rounded to 2 digits after decimal point in 1 line.
     

    Sample Input
    1.00 2.00 3.00 4.00 5.00 6.00
     

    Sample Output
    310.00
     

    Source
     

    Recommend
    heyang   |   We have carefully selected several similar problems for you:  5106 5103 5102 5101 5100 
     

    Statistic | Submit | Discuss | Note

    代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<map>
    #include<vector>
    #include<cmath>
    #include<string>
    #include<queue>
    #define eps 1e-9
    #define ll long long
    #define INF 0x3f3f3f3f
    using namespace std;
    priority_queue<int,vector<int>,greater<int> >Q;
    
    double a,b,c,d,l,r;
    
    double f(double x)
    {
        return fabs(a*x*x*x+b*x*x+c*x+d);
    }
    
    int main()
    {
        double ans;
        while(~scanf("%lf%lf%lf%lf%lf%lf",&a,&b,&c,&d,&l,&r))
        {
            if(a==0&&b!=0)
            {
                double x=-c/(2*b);
                ans=max(f(l),f(r));
                if(x>=l&&x<=r)
                   ans=max(ans,f(x));
            }
            else if(a==0&&b==0)
                ans=max(f(l),f(r));
            else if(a!=0)
            {
                double xx=4*b*b-12*a*c;
                if(xx<0)
                    ans=max(f(l),f(r));
                else
                {
                    double x1=(-2*b+sqrt(xx))/(6*a);
                    double x2=(-2*b-sqrt(xx))/(6*a);
                    ans=max(f(l),f(r));
                    if(x1>=l&&x1<=r)
                         ans=max(ans,f(x1));
                    if(x2>=l&&x2<=r)
                         ans=max(ans,f(x2));
                }
            }
            printf("%.2lf
    ",ans);
        }
        return 0;
    }


  • 相关阅读:
    Jvm性能监控和常用工具
    JVM内存分配和回收策略
    从ExtensionLoader理解Dubbo扩展机制
    类的加载和双亲委派模型
    截器和过滤器的区别
    Struts2的工作原理
    Action
    StrutsPrepareAndExecuteFilter
    单例模式
    Web工作原理
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/7205036.html
Copyright © 2011-2022 走看看