求凹函数的极小值
int tri_search(int l,int r){
// 求凹函数的极小值
int f1,f2;
while(l < r) {
int lp = l + (r - l) / 3;
int rp = r - (r - l) / 3;
f1 = check(lp),f2 = check(rp);
if(f1 <= f2)
r = rp - 1;
else
l = lp + 1;
}
//查找的是极小值
return min(f1,f2);
//查找的是极小值对应的下标
return f1<f2?l:r;
}
求凸函数的极大值
int tri_search(int l,int r){
// 求凸函数的极大值
int f1,f2;
while(l < r) {
int lp = l + (r - l) / 3;
int rp = r - (r - l) / 3;
f1 = check(lp),f2 = check(rp);
if(f1 >= f2)
l = lp + 1;
else
r = rp - 1;
}
//查找的是极大值
return max(f1,f2);
//查找的是极大值对应的下标
return f1>f2?l:r;
}