【集训】ZR集训——非传统题

8.8

交互

1.IO交互
2.函数交互

增量构造法CF1762D

通信

qoj——Communication

1.压缩传递信息
2.交互式通信

提答

模拟退火

非常好文章(赞)

T越大,可变化幅度越大;

若答案更优,直接取

若答案更劣,t越小,答案越劣,接受度越小,反之亦然

T逐渐冷却,此时不再变化

P1337

double energy(double x,double y)//根据物理学知识,能量总和越小越稳定 
{
   double r=0,dx,dy;
   for (int a=1;a<=n;a++)
   {
      dx=x-q[a].x;
      dy=y-q[a].y;
      r+=sqrt(dx*dx+dy*dy)*q[a].w;
   }
      return r;
}
void SA(){
	double t=3000;//初始温度
	double down=0.98;//降温 
	while(t>=eps){
		double dx=ansx+(rand()*2-RAND_MAX)*t;
		double dy=ansy+(rand()*2-RAND_MAX)*t;
		//cout<<dx<<" "<<dy<<"\n";
		double dw=energy(dx,dy);//随机解
		double d=dw-answ;
		//cout<<d<<"\n";
		if(d<=0){
			answ=dw;
			ansx=dx;
			ansy=dy;
		}
		else if(exp(-d/t)*RAND_MAX>rand()){
			ansx=dx;
			ansy=dy; 
		}
		t*=down;
	} 
} 
void solve(){
	int ttt=30;
	while(ttt--) SA();//模拟退火 
}
posted @ 2026-08-10 13:25  Aistyr  阅读(7)  评论(0)    收藏  举报