zoukankan      html  css  js  c++  java
  • (二分搜索 )Strange fuction -- HDU -- 2899

    链接:

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

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


    Problem Description
    Now, here is a fuction:
      F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)
    Can you find the minimum value when x is between 0 and 100.
     
    Input
    The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has only one real numbers Y.(0 < Y <1e10)
     
    Output
    Just the minimum value (accurate up to 4 decimal places),when x is between 0 and 100.
     
    Sample Input
    2 100 200
     
    Sample Output
    -74.4291 -178.8534
     
    F'(x) = 42 * x^6+48*x^5+21*x^2+10*x-y
     
    42 * x^6+48*x^5+21*x^2+10*x = y
    x 要是 double 类型的, 左边要尽可能接近右边的 y 值
    再带入F(x)中
    F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x

    代码:

    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    
    #define  N 150
    #define  D (1e-6)
    
    double f(double x)
    {
        return 42*pow(x, 6.0) + 48*pow(x, 5.0) + 21*pow(x, 2.0) + 10*x;
    }
    
    double F(double x)
    {
        return 6*pow(x, 7.0) + 8*pow(x, 6.0) + 7*pow(x, 3.0) + 5*pow(x, 2.0);
    }
    
    int main()
    {
    
        int t;
        scanf("%d", &t);
    
        while(t--)
        {
            int y;
    
            scanf("%d", &y);
    
            if(y>=f(100))
                printf("%.4f
    ", F(100)-100*y);
            else
            {
    
                double L=0, R=100, m;
    
                while(R-L>D)
                {
                    m = (L+R)/2;
                    if(f(m)<=y) L=m;
                    else R=m;
                }
    
                printf("%.4f
    ", F(L)-L*y);
            }
        }
        return 0;
    }
    勿忘初心
  • 相关阅读:
    PHP如何解决网站大流量与高并发的问题
    HTML CSS 特殊字符表
    PHP 把返回的数据集转换成Tree树
    网页加载时域名加载数量限制
    关于浮点型误差的解决方法
    MVC三层架构
    MyBatis
    plsql储存过程
    游标和触发器
    使用plsql编程
  • 原文地址:https://www.cnblogs.com/YY56/p/4749564.html
Copyright © 2011-2022 走看看