三分 模板

 求凹凸函数时用的,找最大/最小值

f函数中的内容自定

#include
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'

using namespace std;

typedef pair PII;
typedef unsigned long long ull;
typedef long long ll;

double v, x, y;

double f(double mid)
{
	return y / (v + mid * x) + mid;
}

int main()
{
    cin >> v >> x >> y;
    
    double l = 0, r = 1e9;
    while(r - l > 1e-7)
    {
    	double mid = (r - l) / 3.0;
    	double m1 = l + mid;
    	double m2 = m1 + mid;
    	
    	if(f(m1) < f(m2))r = m2;
    	else l = m1;
	}
	
	printf("%.8lf", f(l));
    
    return 0;
}

你可能感兴趣的:(模板,算法,c++,三分)