【】 生日蛋糕
传送门
题意
体积固定为 \(n \pi\) 、固定\(m\)层,每一层都是一个圆柱体,从上往下
-
圆柱的半径必须是递减的,即\(r[i+1]>r[i]\)
-
圆柱的高度必须是递减的,即\(h[i+1]>h[i]\)
找出一个方案使得整个圆柱的外表面积最小(除了最底下那一层的下低面),最后的答案除\(\pi\)
数据范围
\(\begin{array}{l}1 \leq N \leq 10000 \\ 1 \leq M \leq 20\end{array}\)
题解
状态包含的状态有当前的层数、已经确定的体积、已经确定的面积,题目中对最后的答案除圆周率,所以可以直接忽略
剪枝:
-
优化搜索顺序
- 蛋糕从底向上搜索
-
上下界剪枝
-
当前的半径一定小于上一层,最大是上一层\(-1\) 或 \(\sqrt{n-v}\)
-
当前的高度也一定小于上一层,最大是上一层\(-1\) 或 \(\frac{n-v}{R^{2}}\)
-
高度中有一个需要根据\(R\)求出所以先枚举\(R\)
\(R \in [ deep , min( |\sqrt{n-v}|, r[deep+1]-1 ) ]\)
\(H \in [ deep , min( \frac{n - v}{ R^{2}} , h[deep +1) -1 ]\)
3. 可行性剪枝
预处理从上往下前 \(i\) 层的最小体积和侧面积,\(1\sim i\) 层的高度和半径最小为\(1,2,\dots,i\),如果当前的体积加上前 \(i\) 层的最小体积\(>n\)直接回溯
-
最优性剪枝
-
若\(i\)层表面积加上前面已经得到的侧面积大于搜索到的答案,剪枝
-
\(1\sim u\)层的体积 = \(1\sim u\)层的面积为
-
因为\(n-v\)可以求得,所以放缩成用\(n-v\)表示的不等式
当\(\frac{2 \cdot(n-v)}{R_{u+1}}+S\)大于已搜到的答案的时候,剪枝
Code

浙公网安备 33010602011771号