关于模拟退火的大疑惑(符号问题)
  • 板块学术版
  • 楼主LingHusama
  • 当前回复5
  • 已保存回复5
  • 发布时间2023/9/20 20:29
  • 上次更新2023/11/2 18:57:18
查看原帖
关于模拟退火的大疑惑(符号问题)
275989
LingHusama楼主2023/9/20 20:29

继今天早上的学习后,自己做了几道题,然后其他地方基本都没问题,但是关于大于小于等于这些还在迷惑:

例如:BZOJ1844 Run away这道题,我在一定概率下取较差值,代码是这样的:

if(ans<nowans||exp((ans-nowans)/T)<=1.0*rand()/RAND_MAX){
   ans=nowans;
	mayx=xx;
	mayy=yy;
  }

然后我去做了分金币这道题,是这样写的:

if(nowans<ans||1.0*exp((ans-nowans)/T)>=1.0*rand()/RAND_MAX){
	ans=nowans;
}

好我就当我是个**脑子有问题写错了吧,然后我遇到了炸弹攻击1这道题:

exp((ans-res)/T)<=1.0*rand()/RAND_MAX

好好好,就当金币那道题是特殊情况吧,我继续做,然后遇到了 FENCE3 - Electric Fences这道题 又是:

if(res<ans||exp((ans-res)/T)>1.0*rand()/RAND_MAX){
	xx=nowx;
	yy=nowy;
	ans=res;
}

所以,这个符号到底怎么取啊啊啊啊,我们的sensi告诉我应该不会出现这种情况,但这几个我都改成了相反的符号都是wa的。老师靠不住,求助网友。感激不尽

2023/9/20 20:29
加载中...