前言
现在的$OI$这种搜索题已经很久没有出现过了,也只有在刷前些年的题才能看到了。
题目链接
做法
第一反应想到状压,但是状态数至少也是$\binom{25}{12}*25$,是在太大了。
那只能搜索了,看到这道题显然是一个迭代加深的模型,所以我们考虑用$IDA^*$来解决。
考虑如何构造估价函数,最优情况下,我们每次能把一个黑棋或者白棋直接移到我们想要的位置上,所以我们对比一下期望棋盘和现在棋盘有几个位置不一样就行了。注意要把空格的贡献去掉,因为一次移动可能是空格和最后一个棋子同时归位。
那么接下来就是直接暴力搜索,枚举跳哪个骑士并不好,我们改为枚举跳空格就行了。
具体实现的话可以见代码。
代码
1 |
|