玄学求助
查看原帖
玄学求助
541313
hepp楼主2024/5/18 18:52

AC:

void SA()
{
	double T=500;
	double x=xs,y=ys;
	while(T>=1e-18)
	{
		double ansx=x+((rand()<<1)-RAND_MAX)*T,ansy=y+((rand()<<1)-RAND_MAX)*T;
		int d=ak(ansx,ansy),dt=d-ans;
		if(dt>0)
			ans=d,xs=x=ansx,ys=y=ansy;
		T*=xp;//xp=0.997
	}
}

WA:

void SA()
{
	double T=500;
	double x=xs,y=ys;
	while(T>=1e-18)
	{
		double ansx=x+((rand()<<1)-RAND_MAX)*T,ansy=y+((rand()<<1)-RAND_MAX)*T;
		int d=ak(ansx,ansy),dt=d-ans;
		if(dt>0)
			ans=d,xs=x=ansx,ys=y=ansy;
		T*=xp;//xp=0.992
	}
}

AC:

void SA()
{
	double T=500;
	double x=xs,y=ys;
	while(T>=1e-18)
	{
		double ansx=x+((rand()<<1)-RAND_MAX)*T,ansy=y+((rand()<<1)-RAND_MAX)*T;
		int d=ak(ansx,ansy),dt=d-ans;
		if(dt>0)
			ans=d,xs=x=ansx,ys=y=ansy;
		else if(exp(-dt/T)*RAND_MAX<rand())
         x=ansx,y=ansy;           
   		T*=xp;//xp=0.992
	}
}

所以

exp(-dt/T)*RAND_MAX<rand()

在何时成立?

2024/5/18 18:52
加载中...