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|三分法模板的主要内容,如果未能解决你的问题,请参考以下文章

P3382 模板三分法

三分法(洛谷3382 模板三分法)

P3382 模板三分法

洛谷 P3382 模板三分法

[洛谷P3382]模板三分法

P3382 模板三分法