P3382|三分法模板
Posted fisherss
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3382|三分法模板相关的知识,希望对你有一定的参考价值。
三分法求极值
其实就是每次取左右边界的中点,(然后中点稍微左偏一点、再中点往右偏一点,相等于缩小了区间)
再然后
如果求极大值:如果左边界函数值 <= 右边界函数值(说明还没到极值点),R = mid;否则L = mid;
如果求极小值:如果左边界函数值 >= 右边界函数值(说明还没到极值点),L = mid;否则R = mid;
#include<bits/stdc++.h>
using namespace std;
const double eps=1e-6;
int n;
double L,R;
double a[15];
double check(double x){
double sum = 0;
//1层循环:求多项式的值 从幂最大(从左往右)求多项式每次累乘1个x
for(int i=n;i>=0;i--) sum = sum*x+a[i];
return sum;
}
int main(){
cin>>n>>L>>R;
for(int i=n;i>=0;i--) cin>>a[i];
while(L + eps < R){
double mid = (L+R)/2;
if(check(mid+eps) <= check(mid-eps))
R = mid;
else
L = mid;
}
printf("%.5lf",R);
return 0;
}
以上是关于P3382|三分法模板的主要内容,如果未能解决你的问题,请参考以下文章