生日蛋糕这么经典的搜索剪枝我以前都懒得做,难怪去年不给我省一……
题目大意应该都很清楚,问题就是剪枝怎么减。
首先用上下界剪枝——如果当前剩余层数所能形成的最小体积都比剩余体积大就应该减掉。同理,如果能形成的最大体积比剩余体积小也剪掉,只不过后者我懒得花时间写了,直接进行下一个剪枝。
接着呢是最优性剪枝——如果当前剩余层数所能形成的最小表面积比当前的最优解大,显然应该剪掉。
然后我们再结合一些不等式的小知识优化优化吧!
对于剩余体积 vleft 和剩余层数 dep 我们能得到如下的废话关系:
它有什么用呢?当 取得最小值时, 取得最大值,这样我们就确定了 的上界!
最后还有一个小优化!我们发现体积公式和面积公式挺有联系啊!我们尝试着约分一下就得到了这样的东西:
用不等式的传递性推导出来的这个剪枝十分给力!而且只需要短短的一句话!
当然解题报告看似简单,实际操作中是需要一定思考的!