博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【模板】三分法
阅读量:6993 次
发布时间:2019-06-27

本文共 1131 字,大约阅读时间需要 3 分钟。

【模板】三分法

题目描述

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

 

 

输入输出格式输入格式:

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

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

 

输出格式:

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

输入输出样例

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

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

画了一个简陋的图

 

 

1 #include
2 #include
3 #include
4 #include
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

转载于:https://www.cnblogs.com/LQ-double/p/6056831.html

你可能感兴趣的文章
android EditText与TextView几个常用的属性
查看>>
SDN第五次上机作业
查看>>
redis 重要的配置参数
查看>>
Oracle 高级编程 01 ~
查看>>
JS重点整理之JS原型链彻底搞清楚
查看>>
springboot 配置文件
查看>>
浏览器插件 - Chrome 对 UserScript 的声明头(metadata)兼容性一览
查看>>
两个list<object> 比较 得到相同数据 差异数据
查看>>
The road to learning English-Writing
查看>>
Codeforces 990B :Micro-World
查看>>
interceptor拦截器
查看>>
课堂练习
查看>>
Git 工具 - 储藏(Stashing)
查看>>
c# Winforms WebBrowser - Clear all cookies
查看>>
学习 Spring (十) 注解之 @Bean, @ImportResource, @Value
查看>>
POJ 1741 Tree ——点分治
查看>>
越狱(快速幂)
查看>>
联合查询的 SQL 语法
查看>>
Python语法
查看>>
服务器使用bbr加速配置
查看>>