求凹凸函数时用的,找最大/最小值
f函数中的内容自定
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define endl '\n'
using namespace std;
typedef pair<int, int> 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;
}