[POJ 1379]

Run Away

模拟退火

题意:在最大10000*10000平面的上有最多1000个洞,求平面上的某个点,使得其离所有洞的最近距离最大化。输出精度为小数点后1位。

分析:按照模拟退火的思想,在平面上随机取10个点,将单次移动的步长设为算法中的温度,移动方向随机。初始温度设为矩形对角线长的一半,每轮迭代后温度降为之前的0.8。每轮迭代时,对于每个点,按照当前步长尝试移动50次,如果目标点更优则更新位置,否则维持原位。当温度降低到0.001以下时,终止算法,并取10个点中的最优值输出。

ps:非常山寨的实现方式,没有考虑目标位置并非更优时仍进行移动的方案。本题的数据也是很松,只要控制好初始点数,温度下降幅度以及迭代次数,时限范围内很易求得最优位置。