三分模板

三分感觉没什么暖用啊,单峰函数完全可以模拟退火=  =可能只是因为代码比较短吧。

#include<bits/stdc++.h>
using namespace std;
#define Inc(i,L,r) for(register int i=(L);i<=(r);++i)
const double eps = 1e-10;
double calc(double x){
	…… 
}
int main(){
	…… 
	double L,r;
	while(r-L>eps){//三分最小值 
		double Mid=(L+r)/2;
		double MidMid=(Mid+r)/2;
		if(calc(Mid)<calc(MidMid))r=MidMid;
		else L=Mid;
	}
	while(r-L>eps){//三分最大值 
			double Mid=(L+r)/2;
			double MidMid=(Mid+r)/2;
			if(calc(Mid)<calc(MidMid))L=Mid;
			else r=MidMid;
		}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/DancingZ/article/details/81511026
今日推荐