P7812 [JRKSJ R2] Dark Forest 题解
蒟蒻的第一篇黑题题解。
题目描述
解题思路
模拟退火,考虑每次随机交换两个 $p_i$,然后计算当前情况下的排列的权值,如果比当前的最优解要优,那么直接更新即可,同时更新最优排列,否则的话,以一定的概率接受,但是不需要更新最优排列。然后就慢慢跑吧,蒟蒻实测跑 $1$ 分钟可以获得 $95$ 分的好成绩,跑 $5$ 分钟可以获得 $98$ 分的好成绩,再多跑一会儿(指约 $3.2$ 个小时)就过了。
以下是蒟蒻的一些参数(显然单次迭代次数增加比多次迭代次数没有那么多的更好):
- 初始温度 $10^{20}$;
- 结束温度 $10^{-20}$;
- $\Delta=0.99999997$;
- 只需要跑 $1$ 次模拟退火。
注意事项
我们每次在进行模拟退火的时候一定要重新开一个数组记录当前的 $p$,如果找到了一个更优解,那么再把新的数组复制给 $p$,否则可能因为取了一些不是最优解的解从而把最优的排列覆盖掉。
AC 代码
需要者私信。

浙公网安备 33010602011771号