zoukankan      html  css  js  c++  java
  • 【模板】三分法

    【模板】三分法

    题目描述

    如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。

     

     

    输入输出格式输入格式:

    第一行一次包含一个正整数N和两个实数l、r,含义如题目描述所示。

    第二行包含N+1个实数,从高到低依次表示该N次函数各项的系数。

     

    输出格式:

    输出为一行,包含一个实数,即为x的值。四舍五入保留5位小数。

    输入输出样例

    输入样例#1:
    3 -0.9981 0.5
    1 -3 -3 1
    输出样例#1:
    -0.41421

    话说要注意的地方大概就是最好控制次数,不然容易精度流失

    画了一个简陋的图

     1 #include<iostream>
     2 #include<cstring>
     3 #include<cstdio>
     4 #include<algorithm> 
     5 using namespace std;
     6 double a[20],l,r;
     7 int n;
     8 void inti()
     9 {
    10     scanf("%d%lf%lf",&n,&l,&r);
    11     for(int i=n;i>=0;i--)
    12     scanf("%lf",&a[i]);
    13 }
    14 double f(double x)
    15 {
    16     double tmp=1,sum=a[0];
    17     for(int i=1;i<=n;i++)
    18     {
    19         tmp=tmp*x;
    20         sum+=tmp*a[i];
    21     }
    22     return sum;
    23 }
    24 void work()
    25 {
    26     double mid1,mid2;
    27     for(int i=1;i<=200;i++)
    28     {
    29         mid1=l+(r-l)/3;
    30         mid2=l+(r-l)/3*2;
    31         if(f(mid1)>f(mid2)) r=mid2;
    32         else l=mid1;
    33     }
    34     printf("%.5lf",l);
    35     
    36 } 
    37 int main()
    38 {
    39     inti();
    40     work();
    41     return 0;
    42 }
    三分法模板

    以上By Native_carrot

  • 相关阅读:
    div标签和span标签的简单区别
    方法重载的好处及区别
    异步计算工具
    设置"用于统计的冗余字段"要谨慎
    如何建立索引
    NFS,Memcached,Tokyo tyrant实现session共享性能测试
    mysql cache功能小记
    PHP程序员也要学会使用“异常”
    xdebug: var_dump函数设置
    用shell写个简单的log监控程序
  • 原文地址:https://www.cnblogs.com/LQ-double/p/6056831.html
Copyright © 2011-2022 走看看